Apache-Httpd
ssh 反向隧道從 Internet 訪問本地 Web 伺服器
嗨,本地 Web 伺服器在localhost:8765上執行,我需要從外部網路訪問該伺服器。我也有執行 ssh 伺服器和 Apache 伺服器的公共伺服器。
我找到了帶有反向代理伺服器的反向 ssh 隧道來訪問該網站。Belw 是我使用的命令
ssh username@test.ddns.net -R 3000:localhost:8765
在為 Apache 反向代理的公共服務中,我進行了類似的設置。
/etc/apache2/sites-available/default-ssl.conf
ProxyPass /rpi http://127.0.0.1:3000/ ProxyPassReverse /rpi http://127.0.0.1:3000/
我的公共服務地址是
https://test.ddns.net:8090
我可以訪問隧道式本地 Web 伺服器,
https://test.ddns.net:8090/rpi
但問題是 java-script 和 css 沒有載入。那就是連結不起作用。當我檢查瀏覽器控制台時,我可以看到錯誤。GEThttps://test.ddns.net:8090/static/css/jquery.timepicker.css [HTTP/1.1 404 Not Found 316ms] GEThttps://test.ddns.net:8090/static/css/ui.css [HTTP/1.1 404 Not Found 539ms] GEThttps://test.ddns.net:8090/static/css/main.css [HTTP/1.1 404 Not Found 606ms]
怎麼可能解決。
在您的本地機器上,您的 webapp 位於根路徑,即您可以通過以下方式訪問它:
http://127.0.0.1:3000/
但是,當您設置反向代理時,您正在配置
/rpi
路徑(而不是根)以轉發到您的隧道。Javascript 和 CSS 文件正在嘗試從根目錄載入(因為它是在您的本地電腦上配置的,但請記住,您只是在 轉發請求/rpi
,因此根目錄下的 js 和 css 請求不會通過您的 rev 代理。要解決此問題,請將本地網路伺服器上的 webapp 移動到
/rpi
,即您打算通過 rev 代理使用的相同路徑。現在所有請求都將正確通過隧道。要對此進行測試,您需要確保可以在本地訪問您的 web 應用程序:http://127.0.0.1:3000/rpi
然後將您的反向代理重新配置為:
/etc/apache2/sites-available/default-ssl.conf
ProxyPass /rpi http://127.0.0.1:3000/rpi ProxyPassReverse /rpi http://127.0.0.1:3000/rpi
現在您應該能夠訪問您的網站,
https://test.ddns.net:8090/rpi
並且所有內容都應該正確載入。