내 NGINX 서버가 다운된 경우 브라우저 클라이언트가 내 원격 주소에 있는 NGINX 서버로부터 응답을 받는 이유는 무엇입니까?

내 NGINX 서버가 다운된 경우 브라우저 클라이언트가 내 원격 주소에 있는 NGINX 서버로부터 응답을 받는 이유는 무엇입니까?

나는 설명할 수 없는 이상한 행동을 관찰하고 있습니다.

  • Chrome 버전 110.0.5481.77(공식 빌드)(64비트)을 사용하고 있습니다.

  • 번들 프런트 엔드 앱을 제공하기 위해 nginx/1.22.1을 실행 중입니다.

  • IP:443에서 앱 번들을 요청하면 공개 디렉터리에 없는 불완전한 번들을 수신하고 콘솔에 오류가 표시됩니다. net::ERR_INCOMPLETE_CHUNKED_ENCODING 200 (OK).

  • 서버의 원격 주소가 내 원격 주소인 포트 443과 일치합니다.

  • 개발 도구에서 응답 크기는 65.5KB입니다.

    Response Header Server: nginx/1.22.0
    
    ETag: W/"SOME ETAG HASH"
    
  • 이 응답은 내 NGINX 서버가 실행되지 않는 경우에도 반환됩니다. 명확하게 말하자면:

  • 때때로 내 NGINX 서버가 올바른 정적 파일을 보냅니다. 그러나 일정 시간이 지나면 더 이상 올바른 정적 파일을 보내지 않고 불완전한 번들을 보냅니다.

  • 내 NGINX 서버가 실행되고 있지 않을 때에도 이 번들은 계속 전송됩니다.

나는 다음과 같은 이유로 의아해합니다.

  1. 나만의 캐시를 설정하지 않았습니다.
  2. 잘못된 번들로 지정된 nginx/1.22.0이 아닌 nginx/1.22.1을 사용하고 있습니다.
  3. 이 응답을 받았을 때 내 서버가 가동되지 않았을 수 있습니다.
  4. 내 호스트의 netstat -nptwc는 다음을 보여줍니다:
     tcp 0 0 192.168.1.14:42384 IP:443 TIME_WAIT -
     tcp 0 0 192.168.1.14:49090 IP:443 ESTABLISHED 245476/chrome --typ
    
  5. netstat -nptwc내 호스트에는 내 호스트의 트래픽이 표시되지 않습니다.
  6. 이 번들이 반환되면 호스트에 서버 트래픽이 표시되지 않습니다.

좋아요, 여기서 무슨 일이 벌어지고 있는 걸까요... 내 웹 서버의 응답이 내 서버 외부 어딘가에 캐시되어 있나요???

답변1

프록시 서버나 콘텐츠 전송 네트워크(CDN) 등 서버 외부 어딘가에 응답이 캐시되고 있을 가능성이 있습니다.

CDN(CloudFlare)을 통해 웹 사이트에 액세스하면 CDN은 이미지나 JavaScript 파일과 같은 특정 정적 파일을 사용자에게 더 가까운 서버에 캐시하여 웹 사이트의 성능을 향상시킬 수 있습니다. 불완전한 번들이 CDN 캐시에서 제공될 수 있으며, 이는 NGINX 서버가 실행되지 않을 때에도 응답이 계속 반환되는 이유를 설명할 수 있습니다.

또 다른 가능성은 브라우저와 NGINX 서버 사이에 캐싱 프록시가 있다는 것입니다. 이는 서버에 설치된 역방향 프록시일 수도 있고 네트워크나 ISP 네트워크의 다른 곳에 설치된 별도의 프록시 서버일 수도 있습니다.

네트워크 구성을 확인하여 도메인에 콘텐츠를 제공하도록 구성된 캐싱 프록시나 CDN이 있는지 확인할 수 있습니다. 또한 브라우저 캐시를 지우고 문제를 일으킬 수 있는 캐싱 플러그인이나 확장 프로그램을 비활성화해 볼 수도 있습니다.

답변2

제 경우에는 LAN 게이트웨이에 NAT 문제가 있었습니다. 공용 IP에 대한 트래픽은 두 개의 서버로 라우팅되고 있었는데 그 중 하나는 우리가 알지 못했습니다.

관련 정보