我想通过专用子域名(例如)访问一些内部服务,例如我的 NAS(Synology DSM)的 Web 客户端https://nas.example.com
。
该服务已完全运行并可通过内部 IP 访问,例如https://192.168.0.200:5001
。
我显然拥有该域名example.com
,并且有一个正在运行的 Apache 服务器。
我想实现上述目标主要有两个原因:
- 子域名
nas.example.com
比192.168.0.200:5001
- 我想使用现有的 HTTPS 证书,但
nas.example.com
无法将其用于内部 IP 地址
我已经尝试过 Apache mod_rewrite
,但完全没有成功。不幸的是,我无法判断这种情况是否可能,mod_rewrite
或者只是我没有正确配置它。
一些说明:
- 这些服务不应该从外部访问,而只能从我的 LAN 内部访问。
- 理想情况下,当通过 SSH 隧道从外部连接到网络时,它们也应该可以通过子域访问。因此,像这样的专用 DNS 服务器
dnsmasq
不是我想要的,因为它只会处理来自 LAN 内部的请求(我猜……)。
答案1
使用 nginx 更容易,但 apache 也可以处理这个问题,使用mod_proxy
您应该为域 nas.mysite.com 设置一个虚拟服务器,并为该虚拟服务器启用反向代理:
ProxyPass "/" "http://192.168.0.200:5001"
ProxyPassReverse "/" "http://192.168.0.200:5001"
答案2
在以下情况下,不必设置反向代理:
这些服务不应该从外部访问,而只能从我的 LAN 内部访问。
nas.example.com
只需创建指向你的 IP 地址的DNS 记录
nas.example.com. IN A 192.168.0.200
192.168.0.0/16 子网中的非互联网可路由 IP 地址仅在您自己的 LAN 内有效。
然后将 DSM Web 界面配置为在端口 80(HTTP 的默认端口)上运行,您将不再需要在 URL 中使用 5000 之类的端口号。