В связке NGINX и Tomcat. Tomcat не получает ip клиента
в связке Nginx + tomcat не получается передать реальный IP клиента. По логам Nginx вижу IP клиента, выполняется редирект 301, выполняется прокси proxy_pass на локальный хост, на котором слушает tomcat, но в логах tomcat уже адрес не клиента а локального хоста 127.0.0.1
server {
listen 80;
server_name _;
expires -1;
return 301 http://my.syte.ua/promo-site/get?url=$scheme://$host$request_uri;
}
server {
listen 80;
server_name my.syte.ua;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:8080;
}
}
Ответы (1 шт):
Автор решения: Bogdan
→ Ссылка
Спасибо Alexander Prokoshev за ответ! Дублирую его здесь.
Требуется добавить Valve в конфигурацию Tomcat:
<Valve className="org.apache.catalina.valves.RemoteIpValve"
remoteIpHeader="X-Forwarded-For"
requestAttributesEnabled="true"
internalProxies="127\.0\.0\.1" />
После этого Tomcat начинает отправлять заголовки, переданные из nginx:
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;