Как включить X-Real-IP и X-Forwarded-For в Nginx? В настоящее время у меня есть следующие возможности для получения реальных IP-адресов в сети Docker.
set_real_ip_from 172.18.0.0/32;
real_ip_header X-Real-IP;
real_ip_recursive on;
Я также хотел бы передать реальные IP-адреса из Cloudflare в контейнеры Docker. Как использовать X-Real-IP и X-Forwarded-For в одной конфигурации, один набор IP-адресов для X-Real-IP и один набор IP-адресов для X-Forwarded-For?
Если вы пытаетесь получить реальные IP-адреса из-за CloudFlare, вам следует вместо этого использовать их собственный заголовок CF-Connecting-IP. Вам следует игнорировать другие заголовки, если вы не создали их самостоятельно, поскольку они могут быть подделаны клиентом.
real_ip_header CF-Connecting-IP;
Пытаться картапинговать их (не работает):
map $remote_addr $real_header {
default X-Real-IP;
172.18.0.1 X-Forwarded-For;
}
server {
real_ip_header $real_header;
}
Попробуйте разделить эти потоки на разные серверы. В соответствии с руководством real_ip_header может быть установлен для каждого сервера или местоположения, поэтому вы можете:
server {
listen :8080;
real_ip_header X-Real-IP;
include "/all/other/stuff.conf";
}
server {
listen :8081;
real_ip_header X-Forwarded-For;
include "/all/other/stuff.conf";
}
Игра с локациями будет включать в себя намного больше синтаксического сахара для их разделения, и вам, вероятно, придется использовать if, но они злой. Но я думаю, что вполне возможно создать два внутренних местоположения с ручной внутренней перезаписью между ними. Это будет полностью скрыто от пользователя.
Я полагаю, что игра с Lua также может помочь, но сначала попробуйте предыдущие предложения.