OpenWRT 根据域名重定向传入的 WAN 流量

OpenWRT 根据域名重定向传入的 WAN 流量

我有一台装有 OpenWRT 固件的路由器和两台本地网络中的计算机,它们托管不同的网站。此外,我有两个域名(domain1domain2),都指向路由器的 WAN IP 地址。我已将路由器设置为接受端口 80 上的传入请求并将其重定向到第一台计算机。因此,所有流量都会重定向到单台机器。如何让路由器根据域名区分请求,以便每当我输入域名时,domain2它都会将我重定向到第二台计算机?

答案1

这不是路由器的目的,带有 NAT 的路由器在第 3 层和第 4 层(IP 和端口)运行,而您需要的在第 7 层(应用程序:http)运行。

TLDR;您需要配置 Web 代理以根据 HOST 标头路由流量,这应该是一组冗余系统,如 haproxy/keepalived 或 nginx。这里有很多关于如何执行此操作的问答。

根据请求主机头进行 mod_proxy 转发

综上所述,如果您需要在路由器上安装 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

相关内容