mirror of
https://github.com/nginx/nginx.git
synced 2025-01-24 07:06:35 -06:00
inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
a limit_except block if no handler was defined for the block
This commit is contained in:
parent
0ec5492189
commit
90f95522a5
@ -2025,6 +2025,7 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
ngx_keyval_t *src;
|
||||
ngx_hash_key_t *hk;
|
||||
ngx_hash_init_t hash;
|
||||
ngx_http_core_loc_conf_t *clcf;
|
||||
ngx_http_script_compile_t sc;
|
||||
ngx_http_script_copy_code_t *copy;
|
||||
|
||||
@ -2270,6 +2271,13 @@ ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
conf->fastcgi_values = prev->fastcgi_values;
|
||||
}
|
||||
|
||||
if (conf->upstream.upstream || conf->fastcgi_lengths) {
|
||||
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
|
||||
if (clcf->handler == NULL && clcf->lmt_excpt) {
|
||||
clcf->handler = ngx_http_fastcgi_handler;
|
||||
}
|
||||
}
|
||||
|
||||
#if (NGX_PCRE)
|
||||
if (conf->split_regex == NULL) {
|
||||
conf->split_regex = prev->split_regex;
|
||||
|
@ -1720,6 +1720,7 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
size_t size;
|
||||
ngx_keyval_t *s;
|
||||
ngx_hash_init_t hash;
|
||||
ngx_http_core_loc_conf_t *clcf;
|
||||
ngx_http_proxy_redirect_t *pr;
|
||||
ngx_http_script_compile_t sc;
|
||||
|
||||
@ -2022,6 +2023,13 @@ ngx_http_proxy_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
conf->vars = prev->vars;
|
||||
}
|
||||
|
||||
if (conf->upstream.upstream || conf->proxy_lengths) {
|
||||
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
|
||||
if (clcf->handler == NULL && clcf->lmt_excpt) {
|
||||
clcf->handler = ngx_http_proxy_handler;
|
||||
conf->location = prev->location;
|
||||
}
|
||||
}
|
||||
|
||||
if (conf->body_source.data == NULL) {
|
||||
conf->body_source = prev->body_source;
|
||||
|
@ -1053,6 +1053,7 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
ngx_keyval_t *src;
|
||||
ngx_hash_key_t *hk;
|
||||
ngx_hash_init_t hash;
|
||||
ngx_http_core_loc_conf_t *clcf;
|
||||
ngx_http_script_compile_t sc;
|
||||
ngx_http_script_copy_code_t *copy;
|
||||
|
||||
@ -1285,6 +1286,13 @@ ngx_http_scgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
conf->scgi_values = prev->scgi_values;
|
||||
}
|
||||
|
||||
if (conf->upstream.upstream || conf->scgi_lengths) {
|
||||
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
|
||||
if (clcf->handler == NULL && clcf->lmt_excpt) {
|
||||
clcf->handler = ngx_http_scgi_handler;
|
||||
}
|
||||
}
|
||||
|
||||
if (conf->params_source == NULL) {
|
||||
conf->flushes = prev->flushes;
|
||||
conf->params_len = prev->params_len;
|
||||
|
@ -1106,6 +1106,7 @@ ngx_http_uwsgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
ngx_keyval_t *src;
|
||||
ngx_hash_key_t *hk;
|
||||
ngx_hash_init_t hash;
|
||||
ngx_http_core_loc_conf_t *clcf;
|
||||
ngx_http_script_compile_t sc;
|
||||
ngx_http_script_copy_code_t *copy;
|
||||
|
||||
@ -1340,6 +1341,13 @@ ngx_http_uwsgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
|
||||
conf->uwsgi_values = prev->uwsgi_values;
|
||||
}
|
||||
|
||||
if (conf->upstream.upstream || conf->uwsgi_lengths) {
|
||||
clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
|
||||
if (clcf->handler == NULL && clcf->lmt_excpt) {
|
||||
clcf->handler = ngx_http_uwsgi_handler;
|
||||
}
|
||||
}
|
||||
|
||||
ngx_conf_merge_uint_value(conf->modifier1, prev->modifier1, 0);
|
||||
ngx_conf_merge_uint_value(conf->modifier2, prev->modifier2, 0);
|
||||
|
||||
|
@ -3908,6 +3908,7 @@ ngx_http_core_limit_except(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
|
||||
clcf->loc_conf = ctx->loc_conf;
|
||||
clcf->name = pclcf->name;
|
||||
clcf->noname = 1;
|
||||
clcf->lmt_excpt = 1;
|
||||
|
||||
if (ngx_http_add_location(cf, &pclcf->locations, clcf) != NGX_OK) {
|
||||
return NGX_CONF_ERROR;
|
||||
|
@ -286,6 +286,7 @@ struct ngx_http_core_loc_conf_s {
|
||||
#endif
|
||||
|
||||
unsigned noname:1; /* "if () {}" block or limit_except */
|
||||
unsigned lmt_excpt:1;
|
||||
unsigned named:1;
|
||||
|
||||
unsigned exact_match:1;
|
||||
|
Loading…
Reference in New Issue
Block a user