编辑-我改变了问题,因为我对错误的来源有误解
我在部署 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 代理配置的高级选项卡下设置备用端口号。