TIL

localhost로는 되는데 IP로는 안 되는 이유 정리

하얀잔디 2026. 1. 7. 20:12

nginx에서 포트 열어두면 다 되는 줄 알았음.
근데 localhost로는 되고, 서버 IP로는 connection refused 발생했음.

처음엔 방화벽 문제인 줄 알았는데 아니었음.

 

 실제 원인

 

근데 nginx 설정 안에서

  • 해당 포트에 대한 listen 설정이 없었거나
  • server block(엔드포인트) 설정이 빠져 있었음
  • 또는 설정 변경 후 reload가 안 된 상태였음

결과적으로:그래서 컨테이너가 TCP RST로 바로 거절함.

  • 포트는 열려 있는 것처럼 보이지만,
    실제 nginx 프로세스는 그 포트를 받고 있지 않았음.
  • docker에서 포트는 publish 되어 있었음.
    그래서 nmap localhost에서는 open으로 보였음.

 

결과적으로

포트는 열려 있는 것처럼 보이지만,
실제 nginx 프로세스는 그 포트를 받고 있지 않았음.

그래서 컨테이너가 TCP RST로 바로 거절함.

 

 

 

 왜 localhost에서는 된 것처럼 보였나

localhost 테스트는:

  • docker 브릿지 / 포트 포워딩 레벨까지만 확인함
  • 실제 서비스 프로세스가 받는지까지는 보장 안 됨

그래서 착시 생김.

 

 

 왜 서버 IP로는 안 됐나

서버 IP로 접근하면

  • 실제 네트워크 인터페이스 → docker → 컨테이너 → nginx 순으로 들어옴
  • nginx가 해당 포트를 listen 안 하고 있으니 바로 RST 발생함
  • 결과적으로 connection refused 발생함