<div dir="ltr">Спасибо, Федор! Разобрался. Дело в том, что трафик на nginx заводится через iptables REDIRECT. Поэтому какой бы адрес ни находился в качестве destination IP, из-за редиректа он всегда становится первым адресом интерфейса / адресом первого интерфейсаю Спасибо еще раз!</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">чт, 28 февр. 2019 г. в 22:00, Fedor Dikarev <<a href="mailto:fe@hamilton.rinet.ru">fe@hamilton.rinet.ru</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">А это точно тестируемый конфиг приведен? Может там еще что-то есть?<br>
<br>
Тут получается что nginx проксирует сам на себя, и я даже не поленился <br>
это попробовать и получил ожидаемое:<br>
> # cat localhost.conf <br>
> server {<br>
>         listen 80;<br>
> <br>
>         access_log /var/log/nginx/local-access.log;<br>
>         location / { return 200 "$server_addr\n"; }<br>
>         location /one {<br>
>                 proxy_set_header    X-Server-IP $server_addr;<br>
>                 proxy_pass          $scheme://$server_addr;<br>
>         }<br>
> }<br>
<br>
> # grep -c /one /var/log/nginx/local-access.log ; curl <a href="http://192.168.255.5/one" rel="noreferrer" target="_blank">http://192.168.255.5/one</a> ; grep -c /one /var/log/nginx/local-access.log<br>
> 909<br>
> <html><br>
> <head><title>502 Bad Gateway</title></head><br>
> <body><br>
> <center><h1>502 Bad Gateway</h1></center><br>
> <hr><center>nginx/1.15.8</center><br>
> </body><br>
> </html><br>
> 1813<br>
<br>
> grep -c /one /var/log/nginx/local-access.log ; curl <a href="http://192.168.255.5/one" rel="noreferrer" target="_blank">http://192.168.255.5/one</a> ; grep -c /one /var/log/nginx/local-access.log<br>
> 1813<br>
> <html><br>
> <head><title>502 Bad Gateway</title></head><br>
> <body><br>
> <center><h1>502 Bad Gateway</h1></center><br>
> <hr><center>nginx/1.15.8</center><br>
> </body><br>
> </html><br>
> 2820<br>
<br>
<br>
28.02.19 21:35, Igor Savenko пишет:<br>
> Хм. Интересно получается.<br>
> Интерфейсы на хосте (поскольку это, видимо, KVM guest, то все они, <br>
> наверное, выставлены в один бридж, но это не имеет отношения к делу):<br>
> [root@blissstagingserver1 imunify360-webshield]# ip -o -4 ad | grep eth<br>
> 2: eth0    inet <a href="http://10.0.0.143/26" rel="noreferrer" target="_blank">10.0.0.143/26</a> <<a href="http://10.0.0.143/26" rel="noreferrer" target="_blank">http://10.0.0.143/26</a>> brd 10.0.0.191 <br>
> scope global eth0\       valid_lft forever preferred_lft forever<br>
> 3: eth1    inet <a href="http://10.0.0.146/26" rel="noreferrer" target="_blank">10.0.0.146/26</a> <<a href="http://10.0.0.146/26" rel="noreferrer" target="_blank">http://10.0.0.146/26</a>> brd 10.0.0.191 <br>
> scope global eth1\       valid_lft forever preferred_lft forever<br>
> 4: eth2    inet <a href="http://10.0.0.147/26" rel="noreferrer" target="_blank">10.0.0.147/26</a> <<a href="http://10.0.0.147/26" rel="noreferrer" target="_blank">http://10.0.0.147/26</a>> brd 10.0.0.191 <br>
> scope global eth2\       valid_lft forever preferred_lft forever<br>
> <br>
>      server {<br>
>          listen *:80;<br>
>          location / {<br>
>              proxy_set_header    X-Server-IP $server_addr;<br>
>              proxy_pass          $scheme://$server_addr;<br>
>          }<br>
>      }<br>
> <br>
> Бекэндом выступает питоновский http.server, который просто выводит в <br>
> консоль заголовки Host и X-Server-IP<br>
> <br>
> $ curl -L -v <a href="http://10.0.0.146" rel="noreferrer" target="_blank">http://10.0.0.146</a><br>
> * Rebuilt URL to: <a href="http://10.0.0.146/" rel="noreferrer" target="_blank">http://10.0.0.146/</a><br>
> *   Trying 10.0.0.146...<br>
> * TCP_NODELAY set<br>
> * Connected to 10.0.0.146 (10.0.0.146) port 80 (#0)<br>
>  > GET / HTTP/1.1<br>
>  > Host: 10.0.0.146<br>
>  > User-Agent: curl/7.52.1<br>
>  > Accept: */*<br>
>  ><br>
> < HTTP/1.1 200 OK<br>
> <br>
> На это питоновский сервер пишет<br>
> Host: 10.0.0.146, IP: 10.0.0.143<br>
> <br>
> То есть $server_addr -- 10.0.0.143, a не 146, как ожидалось...<br>
> <br>
> То есть в $server_add<br>
> <br>
> чт, 28 февр. 2019 г. в 18:37, Fedor Dikarev <<a href="mailto:fe@hamilton.rinet.ru" target="_blank">fe@hamilton.rinet.ru</a> <br>
> <mailto:<a href="mailto:fe@hamilton.rinet.ru" target="_blank">fe@hamilton.rinet.ru</a>>>:<br>
> <br>
> <br>
>     28.02.2019 19:20, Igor Savenko пишет:<br>
>      > Доброе время суток!<br>
>      > Подскажите, есть ли вообще способ определить, на какой именно<br>
>     адрес был<br>
>      > послан запрос (хост имеет несколько интерфейсов с разными<br>
>     адресами или<br>
>      > несколько secondary адресов на одном интерфейсе), чтобы спроксировать<br>
>      > этот запрос на корректный адрес upstream. который тоже слушает на<br>
>     localhost.<br>
>      > Схема проста:<br>
>      > server {<br>
>      >     listen *:80;<br>
>      >     server_name _;<br>
>      >     location / {<br>
>      >         proxy_pass http://$server_addr;<br>
>      >     }<br>
>      > }<br>
>      ><br>
>      > При этом у хоста 2 адреса на интерфейсах, скажем, 1.2.3.4 и 5.6.7.8.<br>
>      > Хотелось бы, чтобы при запросе на 5.6.7.8 в $server_addrбыл не<br>
>     1.2.3.4<br>
>      > (как первый и дефолтный адрес, а 5.6.7.8). Если можно это решить<br>
>      > программно (в каком-нибудь модуле, то подскажите, пожалуйста.<br>
>     Спасибо!<br>
> <br>
>     Про правильный server_addr не понял, а сейчас что не так?<br>
>      > # ifconfig lo0<br>
>      > lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384<br>
>      >         options=600003<RXCSUM,TXCSUM,RXCSUM_IPV6,TXCSUM_IPV6><br>
>      >         inet6 ::1 prefixlen 128<br>
>      >         inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3<br>
>      >         inet 127.0.0.1 netmask 0xff000000<br>
>      >         inet 192.168.255.1 netmask 0xffffffff<br>
>      >         inet 192.168.255.2 netmask 0xffffffff<br>
>      >         inet 192.168.255.3 netmask 0xffffffff<br>
>      >         inet 192.168.255.4 netmask 0xffffffff<br>
>      >         inet 192.168.255.5 netmask 0xffffffff<br>
>      >         nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL><br>
>      >         groups: lo<br>
> <br>
>      > # cat localhost.conf<br>
>      > server {<br>
>      >         listen 80;<br>
>      ><br>
>      >         location / { return 200 "$server_addr\n"; }<br>
>      > }<br>
> <br>
>      > # for h in 2 3 4; do curl 192.168.255.$h; done<br>
>      > 192.168.255.2<br>
>      > 192.168.255.3<br>
>      > 192.168.255.4<br>
> <br>
> <br>
>      ><br>
>      > _______________________________________________<br>
>      > nginx-ru mailing list<br>
>      > <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a> <mailto:<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a>><br>
>      > <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
>      ><br>
>     _______________________________________________<br>
>     nginx-ru mailing list<br>
>     <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a> <mailto:<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a>><br>
>     <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
> <br>
> <br>
> _______________________________________________<br>
> nginx-ru mailing list<br>
> <a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
> <a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a><br>
> <br>
<br>
-- <br>
Fedor Dikarev<br>
_______________________________________________<br>
nginx-ru mailing list<br>
<a href="mailto:nginx-ru@nginx.org" target="_blank">nginx-ru@nginx.org</a><br>
<a href="http://mailman.nginx.org/mailman/listinfo/nginx-ru" rel="noreferrer" target="_blank">http://mailman.nginx.org/mailman/listinfo/nginx-ru</a></blockquote></div>