@summerwind
Web-программист

Как внутри docker-контейнера получить реальный ip пользователя?

Создаю 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", но это неудобно, потому что пропадает возможность привязки порта контейнера к произвольному порту хоста.
  • Вопрос задан
  • 1554 просмотра
Пригласить эксперта
Ответы на вопрос 1
nazarpc
@nazarpc
Open Source enthusiast
При запросах откуда? Выглядит как будто вы из внутренней сети и делаете запросы, иначе X-Forwarded-For был бы другим. Сделайте запрос на публичный IP сервера.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы