當我通過負載均衡器訪問 Nginx 時更改重定向到錯誤的埠
編輯 - 我改變了問題,因為我對錯誤的來源有誤
我的 Openam 部署遇到了一些問題,想知道您是否可以提供幫助。
我的設置如下:在負載均衡器(HAproxy)後面設置了 2 個 OpenAM 伺服器。負載均衡器設置在兩個反向代理 (nginx) 後面。兩個反向代理在另一個負載均衡器(haproxy)後面提供服務。所以一個請求將通過 Haproxy > nginx > Haproxy > openam
我可以毫無問題地通過反向代理訪問 OpenAM Web 控制台。在這個級別上一切正常。
問題是當我通過 nginx serevrs 前面的負載均衡器訪問 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
謝謝
我猜你對 ProxyPassReverse 有問題: http ://wiki.nginx.org/LikeApache
成功驗證後,OpenAM 發送 HTTP 302 以將客戶端重定向到 goto URL 或預設 goto URL(302 不是錯誤程式碼..)。
OpenAM 登錄螢幕將在登錄後向您的瀏覽器發送一個 http 重定向。重定向基於從原始文章到受保護應用程序的 HTTP 主機標頭。
嘗試在 openam 代理配置的高級選項卡下設置備用埠號。