Как мне зарегистрировать реальный IP-адрес клиента из nginx в tomcat / spring-boot через CommonsRequestLoggingFilter как для IPv4, так и для IPv6?
У меня есть установка nginx для обратного прокси-сервера Tomcat (через spring -boot), и у меня был ограниченный успех с опцией Spring-boot server.use-forward-headers: true. Работает с IPv4-адресами; однако он по-прежнему регистрирует 0: 0: 0: 0: 0: 0: 0: 1 (nginx) для адресов IPv6. Это проблема, потому что по умолчанию nginx и tomcat связываются как с адресами IPv4, так и с IPv6, поэтому nginx будет перенаправлять запросы tomcat по одному или другому случайным образом.
Примеры операторов ведения журнала:
Before request [uri=/membershiprequest;client=128.250.87.102;user=admin]
Before request [uri=/activity;client=0:0:0:0:0:0:0:1;user=admin]
В идеале оба должны сказать:
Before request [uri=/membershiprequest;client=128.250.87.102;user=admin]
Before request [uri=/activity;client=128.250.87.102;user=admin]
В обоих случаях nginx включает заголовок x-forwarded-by:
IPv4
18:43:14.816532 IP 127.0.0.1.56540 > 127.0.0.1.8180:
........GET /activity HTTP/1.0
Host: test.local.org
X-Real-IP: 128.250.87.102
X-Forwarded-For: 128.250.87.102
X-Forwarded-Proto: https
IPv6
18:43:14.817830 IP6 ::1.37684 > ::1.8180:
........GET /membershiprequest HTTP/1.0
Host: test.local.org
X-Real-IP: 128.250.87.102
X-Forwarded-For: 128.250.87.102
X-Forwarded-Proto: https




Когда загрузка использует поиск кода, она должна делать нечто подобное: переносить заголовки из конца в конец. Возможно, вы сможете найти там решение.