Apache-Httpd

ssh 反向隧道從 Internet 訪問本地 Web 伺服器

  • January 22, 2021

嗨,本地 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並且所有內容都應該正確載入。

引用自:https://unix.stackexchange.com/questions/629747