Rails показывает IP как 127.0.0.1 при доступе из частного сетевого адаптера, но Nginx показывает правильный IP. Публичный IP получает штраф
Мы запускаем приложение Rails на Unicorn + Nginx. На сервере есть две сетевые карты, которые мы используем.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;
}
Есть идеи?