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