конфигурации:
Контейнер с nginx и приложением запущен композом (не сварм):
...
front:
networks:
test_network:
ipv4_address: 10.5.0.4
...
networks:
test_network:
driver: bridge
ipam:
config:
- subnet: 10.5.0.0/16
gateway: 10.5.0.1
конфиг nginx в этом контейнере:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
На хосте в этот контейнер запросы проксируются через nginx хостовой машины:
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://front;
}
Суть проблемы в том, что если ходить через хостовый nginx, то в приложении клиентские ip - это ip докера, если ходить напрямую в nginx в контейнере - то все нормально. Есть ли возможность получения правильных ip при обращении через хостовый nginx, не меняя driver в композе на host и без шаманства с iptables?
а откуда приложение его берет?
Обсуждают сегодня