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

use*_*149 3 openwrt domain-name

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

小智 6

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

太长了;您需要配置一个 Web 代理来根据 HOST 标头路由流量,该代理应该是一组冗余系统,例如 haproxy/keepalived 或 nginx。这里有很多关于如何做到这一点的问答。

mod_proxy 基于请求主机头转发

话虽如此,如果您需要在路由器上安装 nginx,也可以。

opkg update
opkg install nginx
Run Code Online (Sandbox Code Playgroud)

/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;

}
Run Code Online (Sandbox Code Playgroud)

其中 192.168.1.3 和 192.168.1.4 是您的后端。

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