如果我的 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.5 KB。

    Response Header Server: nginx/1.22.0
    
    ETag: W/"SOME ETAG HASH"
    
  • 當我的 NGINX 伺服器未執行時也會傳回此回應。所以要明確的是:

  • 有時我的 NGINX 伺服器會傳送正確的靜態檔案。但一段時間後,它不再發送正確的靜態文件並發送不完整的包。

  • 當我的 NGINX 伺服器未運行時,該捆綁包仍會發送。

我很困惑,因為:

  1. 我還沒有設定自己的緩存
  2. 我使用的是 nginx/1.22.1 而不是由錯誤的套件指定的 nginx/1.22.0
  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 的流量被路由到兩台伺服器,其中一台我們不知道。

相關內容