我观察到一些我无法解释的奇怪行为。
我正在使用 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 服务器没有运行时,该包仍会被发送。
我感到困惑,因为:
- 我没有设置自己的缓存
- 我使用的是 nginx/1.22.1,而不是由错误包指定的 nginx/1.22.0
- 当我收到此回复时我的服务器可能没有启动
- 我的主机上的 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
netstat -nptwc
我的主机上没有显示来自我的主机的流量。- 当此包返回时,我没有看到主机上的任何服务器流量。
好的,那么这里发生了什么事...我的网络服务器的响应是否缓存在服务器之外的某个地方???
答案1
响应可能被缓存在服务器外部的某个地方,例如代理服务器或内容分发网络 (CDN)。
当您通过 CDN(即 CloudFlare)访问网站时,CDN 会在更靠近用户的服务器上缓存某些静态文件(如图像或 JavaScript 文件),这可以提高网站的性能。CDN 缓存可能会提供不完整的包,这可以解释为什么即使您的 NGINX 服务器未运行,仍会返回响应。
另一种可能性是您的浏览器和 NGINX 服务器之间有一个缓存代理。这可能是安装在您服务器上的反向代理,也可能是安装在您网络或 ISP 网络上其他地方的单独代理服务器。
您可以尝试检查网络配置,看看是否有任何缓存代理或 CDN 配置为为您的域提供内容。您还可以尝试清除浏览器缓存并禁用可能导致问题的任何缓存插件或扩展。
答案2
就我而言,我们的 LAN 网关存在 NAT 问题。发往公网 IP 的流量被路由到两台服务器,而其中一台服务器我们并不知道。