Mercurial > hg > nginx
comparison src/http/ngx_http_core_module.c @ 4749:613750237b36
Entity tags: the "etag" directive.
It allows to disable generation of nginx's own entity tags, while
still handling ETags in cache properly. This may be useful e.g.
if one want to serve static files from servers with different ETag
generation algorithms.
author | Maxim Dounin <mdounin@mdounin.ru> |
---|---|
date | Mon, 09 Jul 2012 14:53:42 +0000 |
parents | 192f54280a7a |
children | 1c5e2e4d5b35 |
comparison
equal
deleted
inserted
replaced
4748:192f54280a7a | 4749:613750237b36 |
---|---|
648 ngx_conf_set_flag_slot, | 648 ngx_conf_set_flag_slot, |
649 NGX_HTTP_LOC_CONF_OFFSET, | 649 NGX_HTTP_LOC_CONF_OFFSET, |
650 offsetof(ngx_http_core_loc_conf_t, chunked_transfer_encoding), | 650 offsetof(ngx_http_core_loc_conf_t, chunked_transfer_encoding), |
651 NULL }, | 651 NULL }, |
652 | 652 |
653 { ngx_string("etag"), | |
654 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | |
655 ngx_conf_set_flag_slot, | |
656 NGX_HTTP_LOC_CONF_OFFSET, | |
657 offsetof(ngx_http_core_loc_conf_t, etag), | |
658 NULL }, | |
659 | |
653 { ngx_string("error_page"), | 660 { ngx_string("error_page"), |
654 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF | 661 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF |
655 |NGX_CONF_2MORE, | 662 |NGX_CONF_2MORE, |
656 ngx_http_core_error_page, | 663 ngx_http_core_error_page, |
657 NGX_HTTP_LOC_CONF_OFFSET, | 664 NGX_HTTP_LOC_CONF_OFFSET, |
1809 | 1816 |
1810 | 1817 |
1811 ngx_int_t | 1818 ngx_int_t |
1812 ngx_http_set_etag(ngx_http_request_t *r) | 1819 ngx_http_set_etag(ngx_http_request_t *r) |
1813 { | 1820 { |
1814 ngx_table_elt_t *etag; | 1821 ngx_table_elt_t *etag; |
1822 ngx_http_core_loc_conf_t *clcf; | |
1823 | |
1824 clcf = ngx_http_get_module_loc_conf(r, ngx_http_core_module); | |
1825 | |
1826 if (!clcf->etag) { | |
1827 return NGX_OK; | |
1828 } | |
1815 | 1829 |
1816 etag = ngx_list_push(&r->headers_out.headers); | 1830 etag = ngx_list_push(&r->headers_out.headers); |
1817 if (etag == NULL) { | 1831 if (etag == NULL) { |
1818 return NGX_ERROR; | 1832 return NGX_ERROR; |
1819 } | 1833 } |
3537 clcf->log_not_found = NGX_CONF_UNSET; | 3551 clcf->log_not_found = NGX_CONF_UNSET; |
3538 clcf->log_subrequest = NGX_CONF_UNSET; | 3552 clcf->log_subrequest = NGX_CONF_UNSET; |
3539 clcf->recursive_error_pages = NGX_CONF_UNSET; | 3553 clcf->recursive_error_pages = NGX_CONF_UNSET; |
3540 clcf->server_tokens = NGX_CONF_UNSET; | 3554 clcf->server_tokens = NGX_CONF_UNSET; |
3541 clcf->chunked_transfer_encoding = NGX_CONF_UNSET; | 3555 clcf->chunked_transfer_encoding = NGX_CONF_UNSET; |
3556 clcf->etag = NGX_CONF_UNSET; | |
3542 clcf->types_hash_max_size = NGX_CONF_UNSET_UINT; | 3557 clcf->types_hash_max_size = NGX_CONF_UNSET_UINT; |
3543 clcf->types_hash_bucket_size = NGX_CONF_UNSET_UINT; | 3558 clcf->types_hash_bucket_size = NGX_CONF_UNSET_UINT; |
3544 | 3559 |
3545 clcf->open_file_cache = NGX_CONF_UNSET_PTR; | 3560 clcf->open_file_cache = NGX_CONF_UNSET_PTR; |
3546 clcf->open_file_cache_valid = NGX_CONF_UNSET; | 3561 clcf->open_file_cache_valid = NGX_CONF_UNSET; |
3798 ngx_conf_merge_value(conf->recursive_error_pages, | 3813 ngx_conf_merge_value(conf->recursive_error_pages, |
3799 prev->recursive_error_pages, 0); | 3814 prev->recursive_error_pages, 0); |
3800 ngx_conf_merge_value(conf->server_tokens, prev->server_tokens, 1); | 3815 ngx_conf_merge_value(conf->server_tokens, prev->server_tokens, 1); |
3801 ngx_conf_merge_value(conf->chunked_transfer_encoding, | 3816 ngx_conf_merge_value(conf->chunked_transfer_encoding, |
3802 prev->chunked_transfer_encoding, 1); | 3817 prev->chunked_transfer_encoding, 1); |
3818 ngx_conf_merge_value(conf->etag, prev->etag, 1); | |
3803 | 3819 |
3804 ngx_conf_merge_ptr_value(conf->open_file_cache, | 3820 ngx_conf_merge_ptr_value(conf->open_file_cache, |
3805 prev->open_file_cache, NULL); | 3821 prev->open_file_cache, NULL); |
3806 | 3822 |
3807 ngx_conf_merge_sec_value(conf->open_file_cache_valid, | 3823 ngx_conf_merge_sec_value(conf->open_file_cache_valid, |