<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr">Хм. Интересно получается.<div>Интерфейсы на хосте (поскольку это, видимо, KVM guest, то все они, наверное, выставлены в один бридж, но это не имеет отношения к делу):<br><div>[root@blissstagingserver1 imunify360-webshield]# ip -o -4 ad | grep eth</div><div><font face="monospace, monospace">2: eth0    inet <a href="http://10.0.0.143/26">10.0.0.143/26</a> brd 10.0.0.191 scope global eth0\       valid_lft forever preferred_lft forever</font></div><div><font face="monospace, monospace">3: eth1    inet <a href="http://10.0.0.146/26">10.0.0.146/26</a> brd 10.0.0.191 scope global eth1\       valid_lft forever preferred_lft forever</font></div><div><font face="monospace, monospace">4: eth2    inet <a href="http://10.0.0.147/26">10.0.0.147/26</a> brd 10.0.0.191 scope global eth2\       valid_lft forever preferred_lft forever</font></div></div><div><br></div><div><div><font face="monospace, monospace">    server {</font></div><div><font face="monospace, monospace">        listen *:80;</font></div><div><div><font face="monospace, monospace">        location / {</font></div><div><font face="monospace, monospace">            proxy_set_header    X-Server-IP $server_addr;</font></div><div><font face="monospace, monospace">            proxy_pass          $scheme://$server_addr;</font></div><div><font face="monospace, monospace">        }</font></div></div><div><font face="monospace, monospace">    }</font></div></div><div><br></div><div>Бекэндом выступает питоновский http.server, который просто выводит в консоль заголовки Host и X-Server-IP</div><div><br></div><div><div><font face="monospace, monospace">$ curl -L -v <a href="http://10.0.0.146">http://10.0.0.146</a></font></div><div><font face="monospace, monospace">* Rebuilt URL to: <a href="http://10.0.0.146/">http://10.0.0.146/</a></font></div><div><font face="monospace, monospace">*   Trying 10.0.0.146...</font></div><div><font face="monospace, monospace">* TCP_NODELAY set</font></div><div><font face="monospace, monospace">* Connected to 10.0.0.146 (10.0.0.146) port 80 (#0)</font></div><div><font face="monospace, monospace">> GET / HTTP/1.1</font></div><div><font face="monospace, monospace">> Host: 10.0.0.146</font></div><div><font face="monospace, monospace">> User-Agent: curl/7.52.1</font></div><div><font face="monospace, monospace">> Accept: */*</font></div><div><font face="monospace, monospace">> </font></div><div><font face="monospace, monospace">< HTTP/1.1 200 OK</font></div></div><div><br></div><div>На это питоновский сервер пишет<br><font face="monospace, monospace">Host: 10.0.0.146, IP: 10.0.0.143</font><br></div><div><font face="monospace, monospace"><br></font></div><div><font face="monospace, monospace">То есть $server_addr -- 10.0.0.143, a не 146, как ожидалось...</font></div><div><br></div><div>То есть в $server_add</div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">чт, 28 февр. 2019 г. в 18:37, 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>
28.02.2019 19:20, Igor Savenko пишет:<br>
> Доброе время суток!<br>
> Подскажите, есть ли вообще способ определить, на какой именно адрес был<br>
> послан запрос (хост имеет несколько интерфейсов с разными адресами или<br>
> несколько secondary адресов на одном интерфейсе), чтобы спроксировать<br>
> этот запрос на корректный адрес upstream. который тоже слушает на 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был не 1.2.3.4<br>
> (как первый и дефолтный адрес, а 5.6.7.8). Если можно это решить<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><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><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>