我在Apache面前使用Nginx并遇到URL编码问题。
请求:
GET /forum/index.php%3Ftopic%3D14454.3775%3Bwap2
在Apache中生成此错误(当从Nginx发送proxy_passed时):
/forum/index.php?topic=14454.3775;wap2' not found or unable to stat
当我请求上面的网址(未编码)时,处理得很好。
我找到的解决方案是我需要改变:
proxy_pass http://127.0.0.1:80;
到
proxy_pass http://127.0.0.1:80/;
当排除正斜杠时,原始请求将不会被解码。当我添加正斜杠时,这是我收到的错误消息:
"proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
我的nginx配置块是:
location ~* ^/forum/index.php
{
charset ISO-8859-1;
include /etc/nginx/proxypass.conf;
proxy_pass http://127.0.0.1:80;
}
如何修复proxy_pass指令并包含正斜杠,以便在将请求url传递给Apache之前对其进行解码?
编辑:
请求:
GET /index.php HTTP/1.1" 200 16481 "http://www.example.com/forum/index.php%3Ftopic%3D14454.3775%3Bwap2
错误:
script '/www/example.com/httpdocs/forum/index.php?topic=14454.3775;wap2' not found or unable to stat
答案 0 :(得分:0)
我设法解决了这个问题。
如果有更好的方法来解决这个问题,请告诉我。
Read groupMembershipSAM