2012-01-15 25 views
3

我已經爲我的Rails應用程序做了一些特殊的設置。我的應用程序託管在反向代理之後,並且出於某種原因重寫了請求。運行該應用程序的服務器僅具有內部IP地址。反向代理具有公共地址,並將所有傳入請求重定向到應用程序服務器。使用Devise在Rails中更改主機名重定向

問題是,雖然所有請求都以example.com/my/url形式出現,但它們正在被重寫併發送到應用服務器,如10.0.0.2/my/url。例如,這會成爲問題。通過要求認證並重定向到登錄頁面,設計才能發揮作用。發送的重定向將包含本地IP地址,而不是最初請求的FQDN。

任何想法如何告訴我的Rails應用程序使用重定向中的特定主機名?我試過設置HTTP_HOST使用passenger_set_cgi_param哪些不起作用,也試圖手動設置request.hostbefore_filter

回答

3

我認爲你需要讓你的反向代理着至關重要的HTTP標頭的Rails應用程序。這聽起來像是被剝奪了。

對於nginx的我有我的server塊這些指令:

server { 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_set_header X-Forwarded-Proto $scheme; 
    proxy_set_header Host $http_host; 
    proxy_redirect off; 
    passenger_set_cgi_param HTTP_X_FORWARDED_PROTO https; 
}