У меня следующая проблема с Nginx и GeoIP, и будет хорошо, если вы дадите мне несколько советов о решении.
Примечание. Я знаю, что это можно решить на стороне DNS, но сейчас это невозможно, поэтому я ищу другое решение.
Эта проблема
У моего www.domain.com есть IP-адрес 1.1.1.1, расположенный в Amazon, на котором запущен Nginx, с таким перенаправлением:
location / {
proxy_pass http://2.2.2.2
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
В 2.2.2.2 есть еще один nginx, использующий geoIP. Проблема в том, что все мои клиенты, похоже, происходят из 1.1.1.1, поскольку 2-й nginx геолокатирует $remote_addr
.
Есть ли способ поймать реальный IP-адрес клиента ($ remote_addr в 1.1.1.1) и передать его в качестве другой переменной в 2.2.2.2 и использовать его для геолокации?
Любые подсказки, комментарии или RTFM приветствуются. Я буду искать решение, чтобы попытаться ответить на этот вопрос.
Спасибо.
На восходящем nginx используйте Модуль RealIp чтобы получить настоящий IP из X-Forwarded-For
заголовок, который вы отправляете из подчиненного nginx.
Например:
server {
set_real_ip_from 1.1.1.1;
real_ip_header X-Forwarded-For;