我正在努力将子域从 WAN 转发到 LAN 上的特定服务。大多数服务都在具有静态 LAN IP 地址的 NAS 上运行。一些服务是 Docker 容器,一些是 NAS 中的原生服务,每个服务都有自己的端口,并且已经通过该端口在 LAN 上正常运行。
我想要的是:
- 如何使用反向代理映射每个子域使用标准端口转换为使用自定义端口的内部 IP?例如:
- https://subdomain.example.com:443-->https://192.168.1.11:5001
- https://another.example.com:443-->https://192.168.1.11:9007
- http://third.example.com:80-->http://192.168.1.11:7777
我拥有的:
- 静态IP:我的 ISP 保证静态 IPv4 + IPv6 地址,所以我知道该 IP 是正确的。
- 领域:DNS 列表由我的网络托管提供商管理,它指向我家 DSL 连接的静态 IP。我理解这是一个“通配符”域,因此不需要(甚至不可能)对单个子域进行配置。
- DSL 调制解调器:它具有静态 WAN IP,并配置为“完全开放”,因为我的网关是唯一的 LAN 设备。没有 wifi。
- 网关:带有 Web 界面的 UniFi USG;它在 WAN 端看到 DSL 调制解调器,在 LAN 端看到我的家庭网络。我可以将所需的外部端口转发到所需的 LAN IP 地址 + 端口:
from WAN IP * port 80,443 to LAN IP 192.168.1.11 port 80,443
。 - 服务器:具有静态 LAN IP 的 Synology NAS 和内置反向代理功能,例如
http://bin.example.com --> http://192.168.1.11:7777
对于每个服务,我可以指定 WAN 协议+主机名+端口、启用 HSTS、启用 HTTP/2 以及内部协议+主机名+端口。
- 服务:例如,以桥接模式运行 Docker 容器(位于主机的 IP 地址上),并向其内部容器端口 80 发布 HTTP 端口 7777。因此,
http://192.168.1.11:7777
这是我可以从 LAN 计算机访问的服务。 - Pi 洞:运行 Pi-hole 的 Raspberry Pi。网关已配置此项,LAN 设备为自动 DHCP(具有静态 IP 的 NAS 除外)。
初步结果:
- 局域网计算机能
http://example.com:7777/
和上同样可以很好地访问服务,http://192.168.1.11:7777/
但是不是并http://bin.example.com/
得到错误DNS_PROBE_FINISHED_NXDOMAIN
。 - WAN 设备(我的智能手机,带 WiFi离开) 能不是通过任意一个地址访问该服务就会出现错误
DNS_PROBE_BAD_CONFIG
。 - WAN 设备能访问 NAS内置
http://example.com/
/网站上的服务https://example.com/
(标准端口 80 和 443)。
答案1
听起来你没有做任何反向代理操作。
反向代理通常由 Web 服务器软件完成。许多高级 Web 服务器(nginx、Caddy、Apache)允许您设置虚拟主机,这些虚拟主机除了将流量转发到其后面的某个服务器外,不执行任何操作,并且允许您为目标指定端口。
nginx 具有缓存功能,并且以速度非常快而闻名,因此经常用于此目的。
因此你可以安装 nginx 并配置它,为您的每个服务创建一个虚拟主机。
nginx 需要花一些时间才能真正学会,但它的功能非常强大。