我有一个相当奇怪的问题,似乎是最近几天才开始的(最近几天没有进行任何更改)。我会尽力描述它,但如果我需要发布特定的配置等,请告诉我。
我在 CentOS 6.3 上运行的 2 个后端 nginx Web 服务器前面设置了一个 nginx 负载平衡器。到目前为止,该站点一直运行良好,但是最近在访问主页时,它一直向我显示我在网络服务器上创建为默认站点的页面(这是一个离散的通知,表明主机标头在网络服务器上未被识别)。当您访问子页面时,例如 domain.com/about-us 很好,但访问 domain.com 会显示默认站点。似乎可以通过禁用此特定站点的负载平衡器上的缓存来解决此问题。只要不使用缓存,主页就会正确显示。
负载平衡器上的缓存保存在映射到 /cache 的 RAM 驱动器中,总可用大小为 256Mb。缓存配置如下
proxy_cache_path /cache levels=1:2 keys_zone=app-cache:30m max_size=126m inactive=10m;
proxy_temp_path /cache/tmp;
proxy_buffer_size 8192;
proxy_max_temp_file_size 1m;
昨晚我减少了缓存的总大小,因为我感觉它导致了我最近看到的另一个问题,即我们处于极端负载下,缓存填充到最大允许大小 256Mb,但是在挂载点上没有空间从上游缓冲文件并开始向客户端提供空文件的临时路径。
我查看了特定站点的错误日志,发现了许多实例
2013/01/03 05:47:24 [crit] 22889#0: *352983 pwrite() "/cache/tmp/0000028264" failed (28: No space left on device) while reading upstream, client: 121.58.173.7, server: www.domain.com, request: "GET /images/slider-plus.gif HTTP/1.1", upstream: "http://10.0.100.193:80/images/slider-plus.gif", host: "www.domain.com", referrer: "http://www.domain.com/example-page"
df -h 显示 /cache 挂载目前仅使用 1% 的可用空间,所以我不确定为什么我仍然会收到此错误。
负载均衡器上的 nginx 版本是 1.0.11(从源代码构建) Web 服务器上的 nginx 版本是 1.0.15(从 epel 包安装)
我意识到nginx需要更新,我昨天才意识到这一点。如果这是问题所在,那么我可以提出更新它的计划,但是确认这个问题可能是什么以及如何解决它会很有用。
请随时请求帮助诊断这种情况所需的任何额外信息。
非常感谢
埃里克
编辑:我想我应该补充一点,当服务器负载很小时,网站不显示主页的问题确实会出现,负载均衡器大部分时间都是空闲的,流量不多。只有当服务器的负载比平时高得多时,才会显示空文件问题。