当我通过负载均衡器访问 Nginx 时,它会重定向到错误的端口

当我通过负载均衡器访问 Nginx 时,它会重定向到错误的端口

编辑-我改变了问题,因为我对错误的来源有误解

我在部署 Openam 时遇到了一些问题,想知道您是否可以提供帮助。

我的设置如下:2 个 OpenAM 服务器设置在负载均衡器 (HAproxy) 后面。负载均衡器设置在两个反向代理 (nginx) 后面。两个反向代理设置在另一个负载均衡器 (haproxy) 后面。因此,请求将通过 Haproxy > nginx > Haproxy > openam

我可以通过反向代理毫无问题地访问 OpenAM Web 控制台。在这个级别上一切都运行良好。

问题是当我通过 nginx 服务器前面的负载均衡器访问 openam 时出现的。

我的 nginx 服务器在端口 443 上运行。当我通过 haproxy > nginx >haproxy > openam 访问 openam 时,nginx 会使用端口 443 重定向浏览器。问题就在这里。

我用来访问登录页面的负载均衡器 URL 是 http:/loadbalancerHostname:8090:openam/Login/UI。我可以成功登录。但登录后 URL 更改为 http:/loadbalancerHostname:443:openam/。端口不应更改。

为什么 nginx 要更改端口?我该如何停止它?

nginx 配置:

server {
listen 443;
server_name  oamlb1;


location / {
    proxy_pass        http://oamlb1.mydomain.com:8080;
    proxy_set_header  X-Real-IP $remote_addr;
}
location /openam {
    proxy_pass        http://oamlb1.mydomain.com:8080;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_set_header  Host oamlb1.mydomain.com:8080;

 }
  }

haproxy config:(此文件用于服务器。反向代理的文件除了指向反向代理外,其他都相同)

listen http_proxy :8090
       mode http
       balance roundrobin
       option httpclose
       option forwardfor
       server webA oamreverseproxy1.mydomain.com:443
       option          forwardfor

谢谢

答案1

我猜你在使用 ProxyPassReverse 时遇到了问题: http://wiki.nginx.org/LikeApache

身份验证成功后,OpenAM 发送 HTTP 302 以将客户端重定向到 goto URL 或默认 goto URL(302 不是错误代码...)。

答案2

登录后,OpenAM 登录屏幕将向您的浏览器发送 http 重定向。重定向基于从原始帖子到受保护应用程序的 HTTP 主机标头。

尝试在 openam 代理配置的高级选项卡下设置备用端口号。

相关内容