![OpenWRT 根据域名重定向传入的 WAN 流量](https://linux22.com/image/1545664/OpenWRT%20%E6%A0%B9%E6%8D%AE%E5%9F%9F%E5%90%8D%E9%87%8D%E5%AE%9A%E5%90%91%E4%BC%A0%E5%85%A5%E7%9A%84%20WAN%20%E6%B5%81%E9%87%8F.png)
我有一台装有 OpenWRT 固件的路由器和两台本地网络中的计算机,它们托管不同的网站。此外,我有两个域名(domain1
和domain2
),都指向路由器的 WAN IP 地址。我已将路由器设置为接受端口 80 上的传入请求并将其重定向到第一台计算机。因此,所有流量都会重定向到单台机器。如何让路由器根据域名区分请求,以便每当我输入域名时,domain2
它都会将我重定向到第二台计算机?
答案1
这不是路由器的目的,带有 NAT 的路由器在第 3 层和第 4 层(IP 和端口)运行,而您需要的在第 7 层(应用程序:http)运行。
TLDR;您需要配置 Web 代理以根据 HOST 标头路由流量,这应该是一组冗余系统,如 haproxy/keepalived 或 nginx。这里有很多关于如何执行此操作的问答。
综上所述,如果您需要在路由器上安装 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 是您的后端。