我使用nginx作为几个tomcats前面的负载balencer.在我的传入请求中,我编码了查询参数.但是当请求到达tomcat时,参数被解码:
传入nginx的请求:
curl -i "http://server/1.1/json/T;cID=1234;pID=1200;rF=http%3A%2F%2Fwww.google.com%2F"
传入tomcat的请求:
curl -i "http://server/1.1/json/T;cID=1234;pID=1200;rF=http:/www.google.com/"
我不希望我的请求参数被转换,因为在那种情况下我的tomcat会抛出405错误.
我的nginx配置如下:
upstream tracking { server front-01.server.com:8080; server front-02.server.com:8080; server front-03.server.com:8080; server front-04.server.com:8080; } server { listen 80; server_name tracking.server.com; access_log /var/log/nginx/tracking-access.log; error_log /var/log/nginx/tracking-error.log; location / { proxy_pass http://tracking/webapp; } }
在我当前的apache负载均衡器配置中,我有AllowEncodedSlashes指令来保留我的编码参数:
AllowEncodedSlashes NoDecode
我需要从apache转移到nginx.
我的问题与这个问题完全相反:避免nginx在proxy_pass上转义查询参数