Mercurial > hg > nginx
comparison src/http/ngx_http_core_module.c @ 6852:d15172ebb400
Core: relative redirects (closes #1000).
The current version of HTTP/1.1 standard allows relative references in
redirects (https://tools.ietf.org/html/rfc7231#section-7.1.2).
Allow this form for redirects generated by nginx by introducing the new
directive absolute_redirect.
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Wed, 21 Dec 2016 23:10:51 +0300 |
parents | 92ad1c92bcf9 |
children | c85dfd99a2dd |
comparison
equal
deleted
inserted
replaced
6851:8cd97c14b0e2 | 6852:d15172ebb400 |
---|---|
540 ngx_conf_set_flag_slot, | 540 ngx_conf_set_flag_slot, |
541 NGX_HTTP_LOC_CONF_OFFSET, | 541 NGX_HTTP_LOC_CONF_OFFSET, |
542 offsetof(ngx_http_core_loc_conf_t, reset_timedout_connection), | 542 offsetof(ngx_http_core_loc_conf_t, reset_timedout_connection), |
543 NULL }, | 543 NULL }, |
544 | 544 |
545 { ngx_string("absolute_redirect"), | |
546 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | |
547 ngx_conf_set_flag_slot, | |
548 NGX_HTTP_LOC_CONF_OFFSET, | |
549 offsetof(ngx_http_core_loc_conf_t, absolute_redirect), | |
550 NULL }, | |
551 | |
545 { ngx_string("server_name_in_redirect"), | 552 { ngx_string("server_name_in_redirect"), |
546 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, | 553 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, |
547 ngx_conf_set_flag_slot, | 554 ngx_conf_set_flag_slot, |
548 NGX_HTTP_LOC_CONF_OFFSET, | 555 NGX_HTTP_LOC_CONF_OFFSET, |
549 offsetof(ngx_http_core_loc_conf_t, server_name_in_redirect), | 556 offsetof(ngx_http_core_loc_conf_t, server_name_in_redirect), |
3561 clcf->lingering_close = NGX_CONF_UNSET_UINT; | 3568 clcf->lingering_close = NGX_CONF_UNSET_UINT; |
3562 clcf->lingering_time = NGX_CONF_UNSET_MSEC; | 3569 clcf->lingering_time = NGX_CONF_UNSET_MSEC; |
3563 clcf->lingering_timeout = NGX_CONF_UNSET_MSEC; | 3570 clcf->lingering_timeout = NGX_CONF_UNSET_MSEC; |
3564 clcf->resolver_timeout = NGX_CONF_UNSET_MSEC; | 3571 clcf->resolver_timeout = NGX_CONF_UNSET_MSEC; |
3565 clcf->reset_timedout_connection = NGX_CONF_UNSET; | 3572 clcf->reset_timedout_connection = NGX_CONF_UNSET; |
3573 clcf->absolute_redirect = NGX_CONF_UNSET; | |
3566 clcf->server_name_in_redirect = NGX_CONF_UNSET; | 3574 clcf->server_name_in_redirect = NGX_CONF_UNSET; |
3567 clcf->port_in_redirect = NGX_CONF_UNSET; | 3575 clcf->port_in_redirect = NGX_CONF_UNSET; |
3568 clcf->msie_padding = NGX_CONF_UNSET; | 3576 clcf->msie_padding = NGX_CONF_UNSET; |
3569 clcf->msie_refresh = NGX_CONF_UNSET; | 3577 clcf->msie_refresh = NGX_CONF_UNSET; |
3570 clcf->log_not_found = NGX_CONF_UNSET; | 3578 clcf->log_not_found = NGX_CONF_UNSET; |
3823 return NGX_CONF_ERROR; | 3831 return NGX_CONF_ERROR; |
3824 } | 3832 } |
3825 | 3833 |
3826 ngx_conf_merge_value(conf->reset_timedout_connection, | 3834 ngx_conf_merge_value(conf->reset_timedout_connection, |
3827 prev->reset_timedout_connection, 0); | 3835 prev->reset_timedout_connection, 0); |
3836 ngx_conf_merge_value(conf->absolute_redirect, | |
3837 prev->absolute_redirect, 1); | |
3828 ngx_conf_merge_value(conf->server_name_in_redirect, | 3838 ngx_conf_merge_value(conf->server_name_in_redirect, |
3829 prev->server_name_in_redirect, 0); | 3839 prev->server_name_in_redirect, 0); |
3830 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1); | 3840 ngx_conf_merge_value(conf->port_in_redirect, prev->port_in_redirect, 1); |
3831 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1); | 3841 ngx_conf_merge_value(conf->msie_padding, prev->msie_padding, 1); |
3832 ngx_conf_merge_value(conf->msie_refresh, prev->msie_refresh, 0); | 3842 ngx_conf_merge_value(conf->msie_refresh, prev->msie_refresh, 0); |