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);