Welcome! Log In Create A New Profile

Advanced

Re: local IP address

Igor Savenko
February 28, 2019 03:18PM
Спасибо, но раз уж проблема понятна -- становится все проще. Надо
разобраться с redirect'ом, чтобы трафик приезжал туда, куда должен, а
дальше уже, как я уже понял, разрулимся через $server_addr.

чт, 28 февр. 2019 г. в 22:11, Fedor Dikarev <fe@hamilton.rinet.ru>:

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

local IP address

Igor Savenko February 28, 2019 11:22AM

Re: local IP address

Fedor Dikarev February 28, 2019 11:38AM

Re: local IP address

Igor Savenko February 28, 2019 01:36PM

Re: local IP address

Fedor Dikarev February 28, 2019 03:02PM

Re: local IP address

Igor Savenko February 28, 2019 03:10PM

Re: local IP address

Fedor Dikarev February 28, 2019 03:12PM

Re: local IP address

Igor Savenko February 28, 2019 03:18PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 310
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready