OpenWRT перенаправляет входящий WAN-трафик на основе доменного имени

1902
user2513149

У меня есть роутер с прошивкой OpenWRT и два компьютера в локальной сети, на которых размещены разные сайты. Кроме того, у меня есть два доменных имени ( domain1и domain2), оба указывают на IP-адрес WAN моего маршрутизатора. Я настроил маршрутизатор для приема входящих запросов на порт 80 и перенаправления их на первый компьютер. Поэтому весь трафик перенаправляется на одну машину. Как сделать так, чтобы маршрутизатор различал запросы в зависимости от имени домена, чтобы при каждом вводе domain2он перенаправлял меня на второй компьютер?

0

1 ответ на вопрос

3
Jacob Evans

Это не цель маршрутизатора, маршрутизаторы с NAT работают на уровне 3 и уровне 4 (IP и порт), что вам нужно, работает на уровне 7 (приложение: http).

TLDR; Вам необходимо настроить веб-прокси для маршрутизации трафика на основе заголовков HOST, которые должны представлять собой избыточный набор систем, таких как haproxy / keepalived или nginx. Которые есть МНОГО Q / A здесь о том, как это сделать.

mod_proxy Fowarding на основе запроса заголовка хоста

Все это говорит о том, что если вам нужно установить nginx на свой маршрутизатор, вы можете.

opkg update opkg install nginx 

/etc/nginx/nginx.conf

server { server_name site1.example.com;  location / { # app1 reverse proxy proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://192.168.1.3:80; }  access_log /var/log/nginx/site1.example.com_access.log; error_log /var/log/nginx/site1.example.com_error.log;  }  server { server_name site1.mydomain.com;  location / { # app2 reverse proxy proxy_pass http://192.168.1.4:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; }  access_log /var/log/nginx/site1.mydomain.com_access.log; error_log /var/log/nginx/site1.mydomain.com_error.log;  } 

Где 192.168.1.3 и 192.168.1.4 - ваши бэкэнды.

https://wiki.openwrt.org/doc/howto/http.nginx

Можно ли сделать это с помощью Squid? user2513149 7 лет назад 0
Технически да, но Squid - это прямой прокси Jacob Evans 7 лет назад 0
А как насчет сервера `uhttpd`, который поставляется по умолчанию с OpenWRT? user2513149 7 лет назад 0
Нет опыта в этом, может быть, открыть новый поток, специфичный для uhttpd и openwrt в суперпользовательском обмене, это для бизнес-систем. Jacob Evans 7 лет назад 0