我一直在努力解决这个问题。我的反向代理安装基本上是这样的:
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/时,我被重定向到:http://192.168.115.200/home/但应重定向到http://192.168.115.200/client1/home/
这是global_nginx conf:
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 conf:
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;
}
答案 0 :(得分:1)
您需要在/client1
指令中添加proxy_redirect
前缀。
也许:
proxy_redirect http://$host:8877/ /client1/;
如果您需要匹配多个条件,则可以有多个proxy_redirect
指令。有关详细信息,请参阅this document。