Redirect Nginx反向代理重定向问题

Redirect Nginx反向代理重定向问题,redirect,nginx,proxy,reverse-proxy,http-proxy,Redirect,Nginx,Proxy,Reverse Proxy,Http Proxy,我已经为此挣扎了一段时间了。我的反向代理安装基本上如下所示: 全局\u nginx:=>docker\u nginx:=>docker\u应用程序: 反向代理工作正常,但我的应用程序发送重定向时遇到问题。本质上,应用程序本身只是一个Spring MVC应用程序,它重定向如下: @Controller public class Ctrl { @RequestMapping(value = { "/" }) public String redir() { return

我已经为此挣扎了一段时间了。我的反向代理安装基本上如下所示:

全局\u nginx:=>docker\u nginx:=>docker\u应用程序:

反向代理工作正常,但我的应用程序发送重定向时遇到问题。本质上,应用程序本身只是一个Spring MVC应用程序,它重定向如下:

@Controller
public class Ctrl {
    @RequestMapping(value = { "/" })
    public String redir() {
        return "redirect:home";
    }
}
结果是,当我浏览时,我被重定向到:但应该被重定向到

这是全局_nginx配置:

location /client1 {
    proxy_pass http://localhost:8877/.;
    proxy_redirect http://localhost:8877/ /;
    port_in_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
}
location / {
    proxy_pass http://app:8080/;
    proxy_redirect http://app:8080/ /;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
}
这是我的docker_nginx配置:

location /client1 {
    proxy_pass http://localhost:8877/.;
    proxy_redirect http://localhost:8877/ /;
    port_in_redirect off;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
}
location / {
    proxy_pass http://app:8080/;
    proxy_redirect http://app:8080/ /;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
}

您需要在
proxy\u redirect
指令中添加
/client1
前缀

也许:

proxy_redirect http://$host:8877/ /client1/;

如果需要匹配多个条件,则可以有多个
proxy\u redirect
指令。有关详细信息,请参阅。

谢谢,我错过了
/client1/
。但在我添加这个之后,它仍然失败。最后,我在服务器上通过netcat查看代理传递请求的主机部分。Global_nginx没有像我假设的那样将http请求主机部分从
192.168.115.200=>localhost
更改。这让我想到了将全局nginx代理重定向更改为最终有效的方法:
proxy\u redirect http://$host:8877//client1/