인터넷에서 로컬 웹 서버에 액세스하기 위한 SSH 역터널

인터넷에서 로컬 웹 서버에 액세스하기 위한 SSH 역터널

안녕하세요, 로컬 웹 서버는 locahost에서 실행 중입니다.로컬호스트:8765외부 네트워크에서 이 서버에 액세스해야 합니다. 또한 SSH 서버와 Apache 서버를 실행하는 공용 서버도 있습니다.

역방향 프록시 서버가 있는 역방향 SSH 터널을 통해 웹 사이트에 액세스할 수 있음을 발견했습니다. Belw는 내가 사용하는 명령입니다

 ssh [email protected] -R 3000:localhost:8765

Apache Reverse Proxy의 공개 서비스에서는 다음과 같은 설정을 했습니다.

/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

터널링된 로컬 웹 서버에 액세스할 수 있지만 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

로컬 머신에서 웹 애플리케이션은 루트 경로에 있습니다. 즉, 다음을 통해 액세스할 수 있습니다.

http://127.0.0.1:3000/

그러나 역방향 프록시를 설정하면 /rpi터널(루트가 아님)에 대한 전달 경로가 구성됩니다. Javascript 및 CSS 파일이 루트에서 로드하려고 합니다(로컬 시스템에 구성되어 있지만 요청만 전달하므로 /rpi루트의 js 및 CSS 요청은 개정 코드를 통과하지 않습니다).

이 문제를 해결하려면 로컬 웹 서버의 웹 애플리케이션을 /rpirev 에이전트를 통해 사용하려는 동일한 경로로 이동하십시오. 이제 모든 요청이 터널을 올바르게 통과합니다. 이를 테스트하려면 웹 애플리케이션이 로컬에서 액세스 가능한지 확인해야 합니다.

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있고 모든 것이 올바르게 로드되어야 합니다.

관련 정보