×ðÁú¿­Ê±¹ÙÍøµÇ¼

ÔõÑùʵÏÖNginxµÄ¶¯Ì¬Ä£¿é¼ÓÔØÉèÖÃ

NginxÊÇÒ»¿î¸ßÐÔÄܵÄWebЧÀÍÆ÷ºÍ·´ÏòÊðÀíÈí¼þ£¬×î½üÐû²¼µÄNginx°æ±¾1.9.11¼°ÒÔºóµÄ°æ±¾Ö§³ÖÁ˶¯Ì¬Ä£¿éµÄ¼ÓÔØ¡£ÕâÒ»ÐÂÌØÕ÷ʹµÃÓû§Äܹ»ÔÚ²»ÖØбàÒëºÍÖØÐÂ×°ÖÃNginxµÄÇéÐÎÏ£¬Í¨¹ýÌí¼ÓеĶ¯Ì¬Ä£¿éʵÏÖ¹¦Ð§À©Õ¹ºÍ¶¨ÖÆ»¯¡£±¾ÎĽ«ÏÈÈÝÔõÑùÔÚNginxÖÐʵÏÖ¶¯Ì¬Ä£¿é¼ÓÔØÉèÖ㬲¢¸ø³öÏêϸµÄ´úÂëʾÀý¡£

Nginx¶¯Ì¬Ä£¿é¼ÓÔصÄÔ­ÀíÊÇͨ¹ýÒ»¸öеıàÒëģʽ–¡°–add-dynamic-module=module_path¡±À´·­¿ª¶Ô¶¯Ì¬Ä£¿éµÄÖ§³Ö¡£ÔÚʹÓÃÕâ¸ö±àÒëģʽʱ£¬±àÒëÌìÉúµÄÊÇÒ»¸ö¶¯Ì¬Á´½Ó¿â(.so)Îļþ£¬Õâ¸ö¶¯Ì¬Á´½Ó¿â¿ÉÒÔÔÚNginxÆô¶¯ÔËÐÐʱ±»¶¯Ì¬¼ÓÔغÍжÔØ¡£Ïà¹ØÓÚ¾²Ì¬Ä£¿é£¬¶¯Ì¬Ä£¿é¾ßÓиüºÃµÄÎÞаÐÔ¡£

ÏÂÃæ¾ÍÊÇÏêϸµÄʵÏÖÒªÁ죺

1.±àд¶¯Ì¬Ä£¿éÔ´Âë

ÒÔʵÏÖÌí¼ÓHeaderÍ·²¿ÎªÀý£¬HeaderÍ·²¿Ö¸µÄÊÇWebÓ¦ÓÃÖÐÇëÇóºÍÏìÓ¦µÄÍ·²¿£¬Nginx×Ô¼º²¢²»ÌṩÌí¼ÓHeaderÍ·²¿µÄ¹¦Ð§£¬µ«¿ÉÒÔͨ¹ý×Ô½ç˵Ä£¿éÀ´ÊµÏÖ¡£ÒÔÏ´úÂëÊÇÒ»¸ö¼òÆÓµÄÌí¼ÓHeaderÍ·²¿µÄʾÀý£º

#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>

static ngx_int_t ngx_http_add_header_handler(ngx_http_request_t *r) {
    ngx_table_elt_t *h;
    h = ngx_list_push(&r->headers_out.headers);
    h->hash = 1;
    ngx_str_set(&h->key, "MyHeader");
    ngx_str_set(&h->value, "Hello Nginx!");
    r->headers_out.content_length_n = sizeof("Hello Nginx!") - 1;
    ngx_http_clear_content_length(r);
    ngx_http_header_filter(r);
    ngx_http_send_header(r);
    return NGX_OK;
}

static ngx_int_t ngx_http_add_header_init(ngx_conf_t *cf) {
    ngx_http_handler_pt *h;
    ngx_http_core_main_conf_t *cmcf;
    cmcf = ngx_http_conf_get_module_main_conf(cf, ngx_http_core_module);
    h = ngx_array_push(&cmcf->phases[NGX_HTTP_CONTENT_PHASE].handlers);
    if(h == NULL) {
        return NGX_ERROR;
    }
    *h = ngx_http_add_header_handler;
    return NGX_OK;
}

static ngx_http_module_t ngx_http_add_header_module_ctx = {
    NULL, ngx_http_add_header_init, NULL, NULL, NULL, NULL, NULL, NULL
};

ngx_module_t ngx_http_add_header_module = {
    NGX_MODULE_V1, &ngx_http_add_header_module_ctx, NULL, NGX_HTTP_MODULE, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NGX_MODULE_V1_PADDING
};

µÇ¼ºó¸´ÖÆ

Õâ¶Î´úÂëʵÏÖÁËNginx×Ô½ç˵Ä£¿éngx_http_add_header_module£¬Õâ¸ö×Ô½ç˵Ä£¿éÓÐÁ½¸öº¯Êýngx_http_add_header_handlerºÍngx_http_add_header_init£¬Ç°ÕßÓÃÀ´ÊµÏÖHeaderÍ·²¿Ìí¼ÓµÄÏêϸÂß¼­£¬ºóÕßÓÃÀ´³õʼ»¯Ä£¿é¡£Ã¿¸öÄ£¿é±ØÐè½ç˵һ¸öÄ£¿éÉÏÏÂÎÄngx_http_add_header_module_ctx£¬ÒÔ¼°Ò»¸öngx_module_t½á¹¹Ìå±äÁ¿ngx_http_add_header_module£¬ÆäÖаüÀ¨¸ÃÄ£¿éµÄ°æ±¾ºÅ¡¢ÉÏÏÂÎĵÈÐÅÏ¢¡£

2.±àÒë²¢ÌìÉú¶¯Ì¬Á´½Ó¿â

ʹÓÃÏÂÃæµÄÏÂÁî±àÒë´úÂëÌìÉú¶¯Ì¬Á´½Ó¿â:

./configure --prefix=/usr/local/nginx --add-dynamic-module=./src/http/modules/my_module && make && make install

µÇ¼ºó¸´ÖÆ

Ö´ÐÐÉÏÃæµÄÏÂÁî»áÔÚNginxµÄHTTPÄ£¿éϽ¨Éèmy_moduleĿ¼£¬ÆäÖаüÀ¨×ÅÓÃÀ´¹¹½¨¶¯Ì¬Ä£¿éµÄMakefileÎļþºÍһЩÐëÒªµÄÔ´ÂëºÍÍ·Îļþ£¬ÌìÉúµÄ¶¯Ì¬Á´½Ó¿âÎļþ(.so)ÔÚobjs/Ŀ¼Ï¡£

3.¼ÓÔض¯Ì¬Ä£¿é

ÔÚNginxµÄÉèÖÃÎļþnginx.confÖÐÌí¼ÓÒÔÏ´úÂ룬¼ÓÔض¯Ì¬Á´½Ó¿â£º

load_module modules/ngx_http_add_header_module.so;

http {
    server {
        listen 80;
        server_name myweb.com;
        location / {
            add_header MyHeader "Hello Nginx!";
            root /var/www/html;
        }
    }
}

µÇ¼ºó¸´ÖÆ

ÔÚhttpÄ£¿éÏÂͨ¹ýload_moduleÖ¸Áî¼ÓÔØngx_http_add_header_module.so¶¯Ì¬Á´½Ó¿âÎļþ£¬½ÓÏÂÀ´½ç˵һ¸öserver¿é£¬ÔÚserver¿éÖеÄlocationÉèÖÃÏîÖ¸¶¨Ìí¼ÓHeaderÍ·²¿¡£

4.ÖØмÓÔØNginx

Ö´ÐÐÒÔÏÂÏÂÁîÖØмÓÔØNginxЧÀÍÆ÷£º

nginx -s reload

µÇ¼ºó¸´ÖÆ

Õâ¸öÏÂÁî¿ÉÒÔʵÏÖÖØмÓÔØÉèÖá¢ÖØÆôNginx¡¢¹Ø±ÕNginxµÈ²Ù×÷¡£

ÖÁ´Ë£¬¾ÍÍê³ÉÁËNginxÖÐʵÏÖ¶¯Ì¬Ä£¿é¼ÓÔØÉèÖõÄÀú³Ì¡£

×ܽ᣺

ͨ¹ýÉÏÊöÏÈÈÝ£¬ÎÒÃÇ¿ÉÒÔ¼òÆÓÏàʶNginx 1.9.11¼°ÒÔºó°æ±¾ÖеĶ¯Ì¬Ä£¿é¼ÓÔØʵÏÖÒªÁ졣ʵÏÖÀú³ÌÖÐÐèҪƾ֤˳Ðò±àд¶¯Ì¬Ä£¿éÔ´Âë¡¢±àÒëÌìÉú¶¯Ì¬Á´½Ó¿â¡¢¼ÓÔØÄ£¿é¿â²¢ÇÒÖØмÓÔØNginx¡£Ê¹Óö¯Ì¬Ä£¿éÄܹ»Ê¹µÃÓû§ÔÚpost-release½×¶Î²Å¿ª·¢Ä³¸ö¹¦Ð§£¬Ê¹µÃ²úÆ·ÉÏÏß±äµÃÔ½·¢¿ìËÙ¡¢ÎÞа¡£

ÒÔÉϾÍÊÇÔõÑùʵÏÖNginxµÄ¶¯Ì¬Ä£¿é¼ÓÔØÉèÖõÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡

ÃâÔð˵Ã÷£ºÒÔÉÏչʾÄÚÈÝȪԴÓÚÏàÖúýÌå¡¢ÆóÒµ»ú¹¹¡¢ÍøÓÑÌṩ»òÍøÂçÍøÂçÕûÀí£¬°æȨÕùÒéÓë±¾Õ¾Î޹أ¬ÎÄÕÂÉæ¼°¿´·¨Óë¿´·¨²»´ú±í×ðÁú¿­Ê±¹ÙÍøµÇ¼ÂËÓÍ»úÍø¹Ù·½Ì¬¶È£¬Çë¶ÁÕß½ö×ö²Î¿¼¡£±¾ÎĽӴýתÔØ£¬×ªÔØÇë˵Ã÷À´ÓÉ¡£ÈôÄúÒÔΪ±¾ÎÄÇÖÕ¼ÁËÄúµÄ°æȨÐÅÏ¢£¬»òÄú·¢Ã÷¸ÃÄÚÈÝÓÐÈκÎÉæ¼°ÓÐÎ¥¹«µÂ¡¢Ã°·¸Ö´·¨µÈÎ¥·¨ÐÅÏ¢£¬ÇëÄúÁ¬Ã¦ÁªÏµ×ðÁú¿­Ê±¹ÙÍøµÇ¼ʵʱÐÞÕý»òɾ³ý¡£

Ïà¹ØÐÂÎÅ

ÁªÏµ×ðÁú¿­Ê±¹ÙÍøµÇ¼

18523999891

¿É΢ÐÅÔÚÏß×Éѯ

ÊÂÇéʱ¼ä£ºÖÜÒ»ÖÁÖÜÎ壬9:30-18:30£¬½ÚãåÈÕÐÝÏ¢

QR code
ÍøÕ¾µØͼ