Welcome! Log In Create A New Profile

Advanced

[nginx] Proxy: strengthen syntax checking for some directives.

September 28, 2020 05:44AM
details: https://hg.nginx.org/nginx/rev/8dbc9ee97998
branches:
changeset: 7714:8dbc9ee97998
user: Ruslan Ermilov <ru@nginx.com>
date: Sun Sep 27 23:21:09 2020 +0300
description:
Proxy: strengthen syntax checking for some directives.

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".

diffstat:

src/http/modules/ngx_http_proxy_module.c | 34 +++++++++++++++++++------------
1 files changed, 21 insertions(+), 13 deletions(-)

diffs (87 lines):

diff -r 45e9281c6c5b -r 8dbc9ee97998 src/http/modules/ngx_http_proxy_module.c
--- a/src/http/modules/ngx_http_proxy_module.c Fri Aug 28 14:10:54 2020 -0700
+++ b/src/http/modules/ngx_http_proxy_module.c Sun Sep 27 23:21:09 2020 +0300
@@ -3766,7 +3766,7 @@ ngx_http_proxy_redirect(ngx_conf_t *cf,
ngx_http_compile_complex_value_t ccv;

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

plcf->redirect = 1;
@@ -3775,16 +3775,12 @@ ngx_http_proxy_redirect(ngx_conf_t *cf,

if (cf->args->nelts == 2) {
if (ngx_strcmp(value[1].data, "off") == 0) {
+
+ if (plcf->redirects) {
+ return "is duplicate";
+ }
+
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");
- plcf->redirect = 0;
- plcf->redirects = NULL;
return NGX_CONF_OK;
}

@@ -3808,7 +3804,9 @@ ngx_http_proxy_redirect(ngx_conf_t *cf,
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 "
@@ -3911,7 +3909,7 @@ ngx_http_proxy_cookie_domain(ngx_conf_t
ngx_http_compile_complex_value_t ccv;

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

value = cf->args->elts;
@@ -3919,6 +3917,11 @@ ngx_http_proxy_cookie_domain(ngx_conf_t
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;
}
@@ -3998,7 +4001,7 @@ ngx_http_proxy_cookie_path(ngx_conf_t *c
ngx_http_compile_complex_value_t ccv;

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

value = cf->args->elts;
@@ -4006,6 +4009,11 @@ ngx_http_proxy_cookie_path(ngx_conf_t *c
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;
}
_______________________________________________
nginx-devel mailing list
nginx-devel@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-devel
Subject Author Views Posted

[nginx] Proxy: strengthen syntax checking for some directives.

ru@nginx.com 589 September 28, 2020 05:44AM



Sorry, you do not have permission to post/reply in this forum.

Online Users

Guests: 136
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready