我们有时需要从办公室外访问一个或多个路由器。从我们的网站上访问会非常方便。我们的服务器在 Windows 2008 服务器下运行 Apache。由于它为几个域提供服务,因此对 httpd-vhosts.conf 文件进行了更改:
ProxyRequests Off
ProxyPreserveHost On
<Location "/router/">
ProxyPass http://192.168.1.40/
ProxyPassReverse http://192.168.1.40/
</Location>
当浏览到http://www.ourdomain.com/router/登录页面确实出现了,但缺少一些图片和登录按钮(图片)。登录后,出现一堆乱七八糟的“禁止访问”字样。
似乎 ProxyPreserveHost 指令被完全忽略了。上述修改有什么问题吗?我们是不是误解了什么?可能是因为路由器主页是使用 javascript 构建的,需要配置其他内容?仅供参考,登录路由器后,URL 不会改变(保持http://192.168.1.40)
登录页面的外观如下:
正确的登录页面:
外部登录后路由器主页面:
答案1
我认为 TP-Link Archer C2 也会检查 referer,如果与路由器的内部 IP 不匹配,则会给出 403。这是防止网站从路由器加载内容的安全措施。
尝试在反向代理上手动修改标头:
<Location "/router/">
ProxyPass http://192.168.1.40/
ProxyPassReverse http://192.168.1.40/
Header add referer "http://192.168.1.40/"
RequestHeader set referer "http://192.168.1.40/"
</Location>
请注意,由于路由器固件通常不会自动升级,因此您的设置会将 Web 配置界面及其所有可能的安全问题暴露给外部网络。您已在连接上启用 TLS 是件好事,但您可能还想在路由器自己的登录页面之前添加一些额外的身份验证级别。