您好,本地 Web 服务器在 locahost 上运行,本地主机:8765我需要从外部网络访问该服务器。我还有运行 ssh 服务器和 Apache 服务器的公共服务器。
我发现反向 ssh 隧道与反向代理服务器可以访问该网站。 Belw是我使用的命令
ssh [email protected] -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 脚本和 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]
怎么解决呢。
答案1
在您的本地计算机上,您的 Web 应用程序位于根路径,即您可以通过以下位置访问它:
http://127.0.0.1:3000/
但是,当您设置反向代理时,您正在配置/rpi
转发到隧道的路径(而不是根)。 Javascript 和 CSS 文件正在尝试从根目录加载(因为它是在本地计算机上配置的,但请记住,您仅在 转发请求/rpi
,因此根目录下的 js 和 css 请求不会通过您的 rev 代理。
要解决此问题,请将本地网络服务器上的网络应用程序移至/rpi
,即您打算通过 rev 代理使用的相同路径。现在所有请求都将正确通过隧道。要测试这一点,您需要确保可以在本地访问您的网络应用程序:
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
并且所有内容都应该正确加载。