공개적으로 액세스 가능한 IP 주소를 가진 원격 서버가 있습니다. 이 서버의 포트에서 요소는 다양한 포트를 통해 웹에 호스팅됩니다. 따라서 동일한 네트워크에 연결된 다른 PC에서 [server_ip]:[port]로 이동하여 서버 프로세서 A에서 호스팅되는 애플리케이션을 볼 수 있습니다.
제가 직면한 문제는 서버에 프로세서 A를 통해서만 액세스할 수 있는 두 번째 프로세서(B)가 있다는 것입니다. 예를 들어, 서버 프로세서 A에 연결되어 프로세서 B에 SSH로 연결할 수 있습니다. 그러나 프로세서 B에 대한 공개 연결은 없습니다. 내 목표는 프로세서 B의 응용 프로그램 중 하나를 호스팅하면서 외부에서 해당 "웹 인터페이스"에 대한 액세스를 허용하는 것입니다.
따라서 프로세서 B에서 호스팅되는 웹 페이지를 로드하려고 시도하는 순서도는 프로세서 A를 통해 라우팅되어야 합니다.
PC 요청 웹 페이지 -> 서버 프로세서 A -> 서버 프로세서 B
SSH 터널링을 통해 이 작업을 수행하려고 했지만 제대로 작동하지 않는 것 같습니다. 두 프로세서의 IP 주소는 각자의 인터페이스에 있는 것으로 보이므로 서버 프로세서 A가 특정 보고서에 대한 요청을 프로세서 B로 전달해야 한다는 사실을 알 수 있도록 허용해야 할 것 같습니다.
가능합니까?
답변1
이는 간단한 포트 전달 예제처럼 보입니다. "프로세서"가 무엇을 의미하든 다음을 시도해 볼 수 있습니다.
hostB$ ssh -R8080:127.0.0.1:80 hostA
이는 귀하의 설명에 따라 조정할 수 있는 몇 가지 가정을 만듭니다. 지금까지 우리가 가지고 있는 것은 다음과 같습니다:
hostB$
호스트 B의 CLI에서 명령을 시작합니다. (A에서도 시작할 수 있지만 명령이 약간 다릅니다.)ssh
안전한 인클로저를 사용하세요.-R8080:127.0.0.1:80
를 향해서오른쪽터널의 원격 끝인 포트 8080은 이를 로컬 끝인 127.0.0.1 포트 80으로 보냅니다.hostA
호스트A의 DNS 이름입니다. IP 주소를 알고 있으면 직접 사용할 수도 있습니다.
웹 페이지 호출을 수행하는 클라이언트는 올바른 포트를 지정해야 합니다. :port
예를 들어, 주소 뒤에 이 작업을 수행할 수 있습니다 .http://192.168.0.99:8080
어떤 이유로 모든 호출이 포트 80에 있어야 하고 일부 호출은 A에서 처리하고 다른 호출은 B에서 처리해야 하는 경우 A에서 일부 재작성 규칙이나 프록시가 필요합니다.
답변2
설명하는 작업은 Apache의 HTTPD 또는 NGINX와 같은 대부분의 HTTP 서버를 사용하여 설정할 수 있는 역방향 프록시를 사용하여 수행할 수 있습니다. PC A에 역방향 프록시를 설치하고 구성할 수 있습니다.