我正在尝试使用 nginx 作为两个 weblogic 服务器的代理服务器。weblogic 上的端口是 23823 和 23824,我希望它们都可以从端口 8888 访问,并通过上下文路径进行区分。我尝试过以下配置:
listen 8888;
server_name vead03;
location /app1 {
proxy_pass http://127.0.0.1:23823;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /app2 {
proxy_pass http://127.0.0.1:23824;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
我可以通过端口 8888 访问这两个服务器,没有任何问题,但是当请求到达服务器并调用 时request.getServerPort()
,80
不知为何会收到。我不知道这个消息是从哪里来的。端口 80 不在 nginx 配置中,而且我绝对没有在 Weblogic 的任何地方使用过它。这是一个很大的问题,因为应用程序希望接收8888
,而不是 80。
答案1
解决方案很简单:
proxy_set_header Host $host;
我不得不用
proxy_set_header Host $host:$server_port;