Unicorn + Nginx で Rails アプリケーションを実行しています。サーバーには、使用する 2 つの NIC があります。eth0
パブリック インターネットのリクエストをeth2
処理し、プライベート ネットワークからのリクエストを処理します。
リクエストが を通過するeth0
と、nginx ログにパブリック IP が表示され、Rails ログにもこの IP が表示されます。ただし、リクエストが通過するeth2
と、nginx のログにはプライベート IP が正しく表示されます192.168.5.134
が (例)、Rails のログには が表示され127.0.0.1
ます。
eth0
したがって、 のパブリック リクエストはX-Forwarded-For
ヘッダーが正しく設定されているように見えますが、 のリクエストでは発生していませんeth2
。
私たちの nginx 設定は非常に基本的です:
upstream example.com {
server unix://var/www/example.com/shared/sockets/unicorn.socket fail_timeout=0;
}
...
server {
listen 443 ssl;
...
location @example.com {
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real_IP $remote_Addr;
proxy_set_header X-Forwarded_For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_redirect off;
if ($host ~* "^(.+)\.example.com$") {
set $subdomain $1;
}
proxy_pass http://example.com;
}
何か案は?