2012-01-15 5 views
3

Railsアプリケーションのために特別な設定があります。私のアプリはリバースプロキシの後ろにホストされており、何らかの理由でリクエストを書き換えています。アプリケーションが実行されるサーバーには、内部IPアドレスしかありません。リバースプロキシはパブリックアドレスを持ち、すべての着信要求をアプリケーションサーバーにリダイレクトします。Devailsを使ってRailsのリダイレクトのホスト名を変更する

問題は、すべてのリクエストがexample.com/my/urlとなっている間に書き換えられ、アプリケーションサーバーに10.0.0.2/my/urlとして送信されるという問題です。これは、例えば認証を要求し、ログインページにリダイレクトすることによって、deviseが機能します。送信されたリダイレクトには、最初に要求されたFQDNではなく、ローカルIPアドレスが含まれます。

リダイレクトで特定のホスト名を使用するようにRailsアプリケーションにどのように伝えることができますか?私はを使用してHTTP_HOSTを設定しようとしましたが、これはうまくいかず、手動でrequest.hostbefore_filterに設定しようとしました。

答えて

3

私はあなたの逆引きプロキシにあなたのRailsアプリケーションに重要なHTTPヘッダーを転送する必要があると思います。それらが取り除かれているように聞こえる。

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; 
} 

はnginxのために私は私のserverブロックでこれらのディレクティブを持っています

関連する問題