我对 nginx 1.4.1 使用以下配置:
服务器 {
听8000;
server_name 正确的.name.gr;
位置/测试/注册{
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1;
}
}
我想要做的是当用户访问时,http://correct.name.gr:8000/test/register/他们应该被代理到在端口 80 上运行的 apache。
当我访问时,http://correct.name.gr:8000/test/register/我得到了正确的结果(index.php)。当我访问时,http://correct.name.gr:8000/test/register/asd我得到了正确的结果(来自 apache 的 404)。当我访问时,http://correct.name.gr:8000/test/asd我得到了正确的结果(来自 nginx 的 404)。当我访问时,http://correct.name.gr:8000/test/register123我得到了正确的结果(来自 apache 的 404)。
问题是当我访问http://correct.name.gr:8000/test/register. 我收到 301 响应并被重定向到http://localhost/test/register/(注意尾部斜杠,当然还有 'localhost')!!!
我没有对 nginx 进行任何其他配置来放置斜杠或类似的东西。你知道是什么问题吗?我想http://correct.name.gr:8000/test/register通过代理到 apache 来正常工作(或者如果不可能,至少发出 404 错误而不是重定向到用户的本地主机)。
更新 1:我从另一台计算机上尝试http://correct.name.gr:8000/test/register,而不是我昨天有不良行为的那台计算机。好吧,它奏效了:我刚收到一个 301 响应,指出我是正确的http://correct.name.gr:8000/test/register/!如何在一台计算机上工作而不是在另一台计算机上工作(我在两台计算机上使用相同的浏览器-Chrome)?我明天再试一次,从第三个开始测试,看看行为。
谢谢 !