[PATCH] fixed an "IfIsEvil" example that ngx_proxy did not inherit plcf->location
agentzh
agentzh at gmail.com
Sun Jun 24 05:10:13 UTC 2012
Hello!
The standard ngx_proxy module does not inherit the location config's
"location" field for the "location if" block in
ngx_http_proxy_merge_loc_conf, making the following config example
fail mentioned on the "IfIsEvil" page:
# request will be sent to backend without uri changed
# to '/' due to if
location /proxy-pass-uri {
proxy_pass http://127.0.0.1:8080/;
set $true 1;
if ($true) {
# nothing
}
}
Below is a patch for nginx 1.2.1 that attempts to fix this issue.
Comments welcome!
Thanks!
-agentzh
--- nginx-1.2.1/src/http/modules/ngx_http_proxy_module.c 2012-04-23
18:40:01.000000000 +0800
+++ nginx-1.2.1-patched/src/http/modules/ngx_http_proxy_module.c 2012-06-24
12:48:57.289834450 +0800
@@ -3023,8 +3023,10 @@
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;
+ if (clcf->handler == NULL) {
+ if (clcf->lmt_excpt) {
+ clcf->handler = ngx_http_proxy_handler;
+ }
conf->location = prev->location;
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: nginx-1.2.1-location_if_inherits_proxy.patch
Type: application/octet-stream
Size: 674 bytes
Desc: not available
URL: <http://mailman.nginx.org/pipermail/nginx-devel/attachments/20120624/eff93fbb/attachment.obj>
More information about the nginx-devel
mailing list