⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ngx_http_empty_gif_module.c

📁 nginx 反向代理0.7.1版本 用于实现反向代理
💻 C
字号:
/* * Copyright (C) Igor Sysoev */#include <ngx_config.h>#include <ngx_core.h>#include <ngx_http.h>static char *ngx_http_empty_gif(ngx_conf_t *cf, ngx_command_t *cmd,    void *conf);static ngx_command_t  ngx_http_empty_gif_commands[] = {    { ngx_string("empty_gif"),      NGX_HTTP_LOC_CONF|NGX_CONF_NOARGS,      ngx_http_empty_gif,      0,      0,      NULL },      ngx_null_command};/* the minimal single pixel transparent GIF, 43 bytes */static u_char  ngx_empty_gif[] = {    'G', 'I', 'F', '8', '9', 'a',  /* header                                 */                                   /* logical screen descriptor              */    0x01, 0x00,                    /* logical screen width                   */    0x01, 0x00,                    /* logical screen height                  */    0x80,                          /* global 1-bit color table               */    0x01,                          /* background color #1                    */    0x00,                          /* no aspect ratio                        */                                   /* global color table                     */    0x00, 0x00, 0x00,              /* #0: black                              */    0xff, 0xff, 0xff,              /* #1: white                              */                                   /* graphic control extension              */    0x21,                          /* extension introducer                   */    0xf9,                          /* graphic control label                  */    0x04,                          /* block size                             */    0x01,                          /* transparent color is given,            */                                   /*     no disposal specified,             */                                   /*     user input is not expected         */    0x00, 0x00,                    /* delay time                             */    0x01,                          /* transparent color #1                   */    0x00,                          /* block terminator                       */                                   /* image descriptor                       */    0x2c,                          /* image separator                        */    0x00, 0x00,                    /* image left position                    */    0x00, 0x00,                    /* image top position                     */    0x01, 0x00,                    /* image width                            */    0x01, 0x00,                    /* image height                           */    0x00,                          /* no local color table, no interlaced    */                                   /* table based image data                 */    0x02,                          /* LZW minimum code size,                 */                                   /*     must be at least 2-bit             */    0x02,                          /* block size                             */    0x4c, 0x01,                    /* compressed bytes 01_001_100, 0000000_1 */                                   /* 100: clear code                        */                                   /* 001: 1                                 */                                   /* 101: end of information code           */    0x00,                          /* block terminator                       */    0x3B                           /* trailer                                */};static ngx_http_module_t  ngx_http_empty_gif_module_ctx = {    NULL,                          /* preconfiguration */    NULL,                          /* postconfiguration */    NULL,                          /* create main configuration */    NULL,                          /* init main configuration */    NULL,                          /* create server configuration */    NULL,                          /* merge server configuration */    NULL,                          /* create location configuration */    NULL                           /* merge location configuration */};ngx_module_t  ngx_http_empty_gif_module = {    NGX_MODULE_V1,    &ngx_http_empty_gif_module_ctx, /* module context */    ngx_http_empty_gif_commands,   /* module directives */    NGX_HTTP_MODULE,               /* module type */    NULL,                          /* init master */    NULL,                          /* init module */    NULL,                          /* init process */    NULL,                          /* init thread */    NULL,                          /* exit thread */    NULL,                          /* exit process */    NULL,                          /* exit master */    NGX_MODULE_V1_PADDING};static ngx_int_tngx_http_empty_gif_handler(ngx_http_request_t *r){    ngx_int_t     rc;    ngx_buf_t    *b;    ngx_chain_t   out;    if (!(r->method & (NGX_HTTP_GET|NGX_HTTP_HEAD))) {        return NGX_HTTP_NOT_ALLOWED;    }    rc = ngx_http_discard_request_body(r);    if (rc != NGX_OK) {        return rc;    }    r->headers_out.content_type.len = sizeof("image/gif") - 1;    r->headers_out.content_type.data = (u_char *) "image/gif";    if (r->method == NGX_HTTP_HEAD) {        r->headers_out.status = NGX_HTTP_OK;        r->headers_out.content_length_n = sizeof(ngx_empty_gif);        r->headers_out.last_modified_time = 23349600;        return ngx_http_send_header(r);    }    b = ngx_pcalloc(r->pool, sizeof(ngx_buf_t));    if (b == NULL) {        return NGX_HTTP_INTERNAL_SERVER_ERROR;    }    out.buf = b;    out.next = NULL;    b->pos = ngx_empty_gif;    b->last = ngx_empty_gif + sizeof(ngx_empty_gif);    b->memory = 1;    b->last_buf = 1;    r->headers_out.status = NGX_HTTP_OK;    r->headers_out.content_length_n = sizeof(ngx_empty_gif);    r->headers_out.last_modified_time = 23349600;    rc = ngx_http_send_header(r);    if (rc == NGX_ERROR || rc > NGX_OK || r->header_only) {        return rc;    }    return ngx_http_output_filter(r, &out);}static char *ngx_http_empty_gif(ngx_conf_t *cf, ngx_command_t *cmd, void *conf){    ngx_http_core_loc_conf_t  *clcf;    clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);    clcf->handler = ngx_http_empty_gif_handler;    return NGX_CONF_OK;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -