Nginx

當我通過負載均衡器訪問 Nginx 時更改重定向到錯誤的埠

  • May 11, 2013

編輯 - 我改變了問題,因為我對錯誤的來源有誤

我的 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 代理配置的高級選項卡下設置備用埠號。

引用自:https://serverfault.com/questions/454612