Nginx 反向代理重定向问题

Nginx Reverse Proxy Redirect Issues

我已经为此苦苦挣扎了一段时间。我的反向代理安装基本上是这样的:

global_nginx: http://192.168.115.200/client1/ => docker_nginx: http://localhost:8877/ => docker_app: http://app:8080/

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

@Controller
public class Ctrl {
    @RequestMapping(value = { "/" })
    public String redir() {
        return "redirect:home";
    }
}

结果是当我浏览http://192.168.115.200/client1/ I am redirected to: http://192.168.115.200/home/ but should be redirected to http://192.168.115.200/client1/home/

这是 global_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;
}

这是我的 docker_nginx 配置文件:

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_redirect 指令中添加 /client1 前缀。

也许:

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

如果您需要匹配多个条件,您可以有多个 proxy_redirect 指令。有关详细信息,请参阅 this document