
我們有時需要從辦公室外部存取一台或多台路由器。從我們的網站上執行此操作會非常方便。我們的伺服器在 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 也會檢查引薦來源網址,如果它與路由器的內部 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,但您可能還想在路由器自己的登入頁面之前添加一些額外的身份驗證等級。