Создаю docker-образ на основе "ubuntu:16.04". Поднимаю в нем nginx с простейшей конфигурацией:
server {
listen 80;
location / {
return 200 'Remote addr = ${remote_addr}, X-Forwarded-For = ${proxy_add_x_forwarded_for}';
}
}
Поднимаю контейнер:
docker run --name=mycontainer -p 80:80 -d myimage
При запросах к серверу, ответ такой:
"Remote addr = 172.17.0.1, X-Forwarded-For = 172.17.0.1"
где "172.17.0.1" - это адрес из внутренней сети docker, а не реальный ip клиента, сделавшего запрос.
Как можно получить реальный ip пользователя?
Можно, конечно, при запуске контейнера указать "--net=host", но это неудобно, потому что пропадает возможность привязки порта контейнера к произвольному порту хоста.