Size: a a a

2018 December 16

IM

Ivan Medvedev in Kotlin JVM
Привет всем, подскажите, как мне настроить nginx перед ktor чтобы получить ip клиента (пытаюсь через call.request.origin.remoteHost). Конфигурация ниже возвращает ip nginx сервера а не клиента.
server {
 listen 81;
 location / {
   proxy_set_header Host $host;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

   proxy_pass http://1.2.3.4:8080; # локальный ip сервера с ktor
 }
}
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ок, теперь в ktor бери X-Real-IP из request headers
источник

RI

Ruslan Ibragimov in Kotlin JVM
должно работать
источник

IM

Ivan Medvedev in Kotlin JVM
Да, так работает, но если я открою например через браузер, там будет null. Хотел универсально, но ладно, разберусь. Спасибо.
источник

RI

Ruslan Ibragimov in Kotlin JVM
Напрямую 8080?
источник

IM

Ivan Medvedev in Kotlin JVM
Да
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ну тогда nginx между нету и хидер не пробрасывается
источник

RI

Ruslan Ibragimov in Kotlin JVM
Тут решение это проверять call.request.origin.remoteHost и хидер, и давать приоритет хидеру
источник

RI

Ruslan Ibragimov in Kotlin JVM
источник

RI

Ruslan Ibragimov in Kotlin JVM
О, есть готовая фича для этого
источник

IM

Ivan Medvedev in Kotlin JVM
Я пробовал ее ставить, ничего не изменилось в call.request.origin
источник

RI

Ruslan Ibragimov in Kotlin JVM
чтобы фича работала надо имя хидера в nginx поменять
источник

RI

Ruslan Ibragimov in Kotlin JVM
X-Real-IP на X-Forwarded-Host
источник

RI

Ruslan Ibragimov in Kotlin JVM
например
источник

RI

Ruslan Ibragimov in Kotlin JVM
источник

IM

Ivan Medvedev in Kotlin JVM
Тоже пробовал, не получилось
источник

RI

Ruslan Ibragimov in Kotlin JVM
Ivan Medvedev
Тоже пробовал, не получилось
Вот это странно, советую перепроверить приходит ли хидер руками (например можно было nginx забыть релоуднуть)
источник

IM

Ivan Medvedev in Kotlin JVM
Сейчас еще поразбираюсь, может гдето проглядел
источник

RI

Ruslan Ibragimov in Kotlin JVM
И посмотреть внутрь фичи, может и там баг какой есть
источник

IM

Ivan Medvedev in Kotlin JVM
О, кажется есть прогресс, тут https://ktor.io/servers/features/forward-headers.html#usage написано `install(ForwardedHeaderSupport) or
install(XForwardedHeaderSupport)` я инсталил первую, не сработало, сейчас попробовал 2ю и норм, вернул на 1ю - опять не работает.
источник