제가 관리하는 두 서버가 개발 중에 동시에 포트 3000에서 수신 대기할 수 있다는 사실에 놀랐습니다.
첫 번째 서버가 실행 중일 때 netstat에 다음이 표시됩니다.
▶ sudo netstat -nap tcp | grep 3000
tcp6 0 0 ::1.3000 *.* LISTEN
tcp4 0 0 127.0.0.1.3000 *.* LISTEN
둘 다 실행하십시오.
▶ sudo netstat -nap tcp | grep 3000
tcp4 0 0 *.3000 *.* LISTEN
tcp6 0 0 ::1.3000 *.* LISTEN
tcp4 0 0 127.0.0.1.3000 *.* LISTEN
이에 대한 설명은 첫 번째 서버는 localhost(127.0.0.1)에 대해 포트 3000만 바인딩하고 두 번째 서버는 "모든"(0.0.0.0) 주소에 대해 포트 3000을 바인딩했다는 것입니다. 맞아?
이 동작은 첫 번째 서버가 다른 서버가 특별히 타겟팅하는 트래픽을 대체하는 것으로 보이며 http://localhost:3000
이는 타당하다고 생각합니다. 나는 단지 이 다소 놀라운 상황에 대한 나의 이해를 확인하고 싶었을 뿐이고, 해당 포트에 대한 주소가 이미 바인딩된 경우 "모든" 주소를 수신하려는 시도가 실패할 것이라고 생각했을 것입니다.
답변1
첫 번째 서비스의 경우 귀하의 가정이 정확합니다. 이는 localhost
및 를 수신합니다 locahost6
. 두 번째는 위와 다르게 호스트의 IP를 듣고 있는 것 같습니다. 하지만 두 번째로 들어보는 것도 가능합니다 localhost
. 둘 다 중지하고 두 번째 것만 시작하면 확인할 수 있습니다.
겸손한 제안을 하자면: 서비스 1과 서비스 2의 포트를 분리하십시오. 예를 들어 포트를 3001과 3002로 설정하십시오.