Skip to content

Commit

Permalink
Proxy: strengthen syntax checking for some directives.
Browse files Browse the repository at this point in the history
The "false" parameter of the proxy_redirect directive is deprecated.
Warning has been emitted since c2230102df6f (0.7.54).

The "off" parameter of the proxy_redirect, proxy_cookie_domain, and
proxy_cookie_path directives tells nginx not to inherit the
configuration from the previous configuration level.

Previously, after specifying the directive with the "off" parameter,
any other directives were ignored, and syntax checking was disabled.

The syntax was enforced to allow either one directive with the "off"
parameter, or several directives with other parameters.

Also, specifying "proxy_redirect default foo" no longer works like
"proxy_redirect default".
  • Loading branch information
mdocguard committed Sep 27, 2020
1 parent c85d6fe commit b2b8f22
Showing 1 changed file with 20 additions and 12 deletions.
32 changes: 20 additions & 12 deletions src/http/modules/ngx_http_proxy_module.c
Original file line number Diff line number Diff line change
Expand Up @@ -3766,7 +3766,7 @@ ngx_http_proxy_redirect(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_http_compile_complex_value_t ccv;

if (plcf->redirect == 0) {
return NGX_CONF_OK;
return "is duplicate";
}

plcf->redirect = 1;
Expand All @@ -3775,16 +3775,12 @@ ngx_http_proxy_redirect(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)

if (cf->args->nelts == 2) {
if (ngx_strcmp(value[1].data, "off") == 0) {
plcf->redirect = 0;
plcf->redirects = NULL;
return NGX_CONF_OK;
}

if (ngx_strcmp(value[1].data, "false") == 0) {
ngx_conf_log_error(NGX_LOG_ERR, cf, 0,
"invalid parameter \"false\", use \"off\" instead");
if (plcf->redirects) {
return "is duplicate";
}

plcf->redirect = 0;
plcf->redirects = NULL;
return NGX_CONF_OK;
}

Expand All @@ -3808,7 +3804,9 @@ ngx_http_proxy_redirect(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
return NGX_CONF_ERROR;
}

if (ngx_strcmp(value[1].data, "default") == 0) {
if (cf->args->nelts == 2
&& ngx_strcmp(value[1].data, "default") == 0)
{
if (plcf->proxy_lengths) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"\"proxy_redirect default\" cannot be used "
Expand Down Expand Up @@ -3911,14 +3909,19 @@ ngx_http_proxy_cookie_domain(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_http_compile_complex_value_t ccv;

if (plcf->cookie_domains == NULL) {
return NGX_CONF_OK;
return "is duplicate";
}

value = cf->args->elts;

if (cf->args->nelts == 2) {

if (ngx_strcmp(value[1].data, "off") == 0) {

if (plcf->cookie_domains != NGX_CONF_UNSET_PTR) {
return "is duplicate";
}

plcf->cookie_domains = NULL;
return NGX_CONF_OK;
}
Expand Down Expand Up @@ -3998,14 +4001,19 @@ ngx_http_proxy_cookie_path(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
ngx_http_compile_complex_value_t ccv;

if (plcf->cookie_paths == NULL) {
return NGX_CONF_OK;
return "is duplicate";
}

value = cf->args->elts;

if (cf->args->nelts == 2) {

if (ngx_strcmp(value[1].data, "off") == 0) {

if (plcf->cookie_paths != NGX_CONF_UNSET_PTR) {
return "is duplicate";
}

plcf->cookie_paths = NULL;
return NGX_CONF_OK;
}
Expand Down

0 comments on commit b2b8f22

Please sign in to comment.