Nginx在redirect时丢失了端口

我有一个运行在Vagrant开发环境中的Wordpress网站。 当我加载http://localhost:8080 ,该网站出现的很好,但只要我尝试通过访问http://localhost:8080/wp-admin ,我被redirect到http://localhost/wp-admin/

这里有两件事情:

  1. Nginx正在强制执行尾部的斜线(我不是故意的,afaik,但可以)。
  2. 在尾部的斜线redirect中,端口正在丢失(这是非常不好的)。

我已经尝试添加port_in_redirect指令(使用两个值,说实话),我已经看到类似问题的其他答案,但它没有改变。

任何想法我失踪?

您需要使用proxy_redirect来修改响应头,以便将localhost重写为localhost:8080

location内使用proxy_pass (适合您的用例)时,默认的proxy_redirect是:

 location / { proxy_pass http://localhost:8080/; proxy_redirect http://localhost:8080/ /; } 

由于您在Vagrant中使用相同的8080端口,因此会匹配并删除端口。

有两个简单的解决scheme来避免这种情况:

  1. 转到stream浪汉configuration中的不同端口,以便proxy_redirect不匹配。
  2. 使用proxy_redirect off;禁用proxy_redirect off;

(我知道这是4年前的事,但是我在testingKeyCloak的时候遇到了类似的问题,所以我希望这个答案能够帮助其他人面对这个问题。)