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

1 ответ1

3

Это не цель маршрутизатора, маршрутизаторы с 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .