Nginx URL编码问题

时间:2017-08-19 20:47:50

标签: apache nginx

我在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

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。

如果有更好的方法来解决这个问题,请告诉我。

Read groupMembershipSAM