동일한 포트에서 여러 서버 실행


19

포트 80에서 XAMPP 서버와 Nodejs 서버를 실행하고 싶습니다.

서버가 HTTP 요청을 받으면 XAMPP가 요청을 처리하고 서버가 웹 소켓 요청을 받으면 Nodejs

그게 어떻게 가능해? 포트가 이미 사용 중이면 다른 서버 프로그램을 시작할 수 없습니다.

답변:


45

이를 위해서는 리버스 프록시를 사용해야합니다 (예 : Apache 2.4). 와 mod_proxy_wstunnel .

프론트 엔드로 사용하고 연결을 적절한 백엔드로 터널링하십시오.


22

운영 체제는 수신 된 패킷을 보낼 프로세스를 알 수 없으므로 단일 프로세스 만 동일한 IP 주소 및 프로토콜에 대해 특정 포트에서 수신 할 수 있습니다.

원하는 것을 달성하려면 포트 80에서 수신 대기하고 올바른 대상으로 트래픽을 전달 하는 리버스 프록시 를 사용해야 합니다. 여러 가지 방법이 있습니다. 예를 들어 WebSocket 요청을 전달하도록 웹 서버 (Apache)를 설정하거나 HTTP 트래픽을 전달하도록 Node.js를 구성 할 수 있습니다. 사용 가능한 옵션을 조사하고 필요에 가장 적합한 옵션을 선택하십시오.


3

다른 사용자가 이미 언급 한 리버스 프록시 옵션과 함께 머신에 여러 IP 주소를 할당 할 수 있습니다. 이는 IPv4의 비용이들 수 있습니다 (또는 서버가 호스팅되는 위치에 따라 제공되지 않을 수도 있음). IPv6을 사용할 수있는 위치에 있지 않아야합니다 (예 : 하나 또는 둘 다에 연결하는 사람 또는 서비스가 IPv6 가능) . 이 방법으로 두 서비스 모두 다른 주소에서 포트 80을 청취 할 수 있습니다.

포트 80 만 언급했듯이 HTTPS를 사용하지 않는 것으로 가정합니다. 리버스 프록시 옵션을 사용하는 경우 다중 이름 SSL 인증서가 필요하거나 SNI를 구성하고 일부 오래된 클라이언트 (XP의 경우 오래된 Android 버전)에서는이를 수행 할 수 없다는 사실에 따라야합니다. 오류없이 연결하십시오. 다중 주소 옵션은 할당 된 추가 주소가 필요하지만이 문제를 피할 수 있습니다.


작은 점 : IP를 변환하기 위해 이미 NAT를 사용하고 있다면 포트 리디렉션도 할 수 있습니다. 예를 들어 인터넷에 액세스 할 수있는 Apache 서버를 실행 중이고 테스트에 XAMPP를 사용하려는 경우 비표준 포트에서 Apache를 실행하고 라우터 NAT 외부 포트 80이 내부 IP의 비표준 포트에 요청합니다. 포트 80에서 XAMPP를 실행할 수 있습니다.
Calrion
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.