我们正在使用 Nginx 在开发平台上提供静态文件。由于它是一个开发平台,我们希望禁用缓存,以便将每个更改传播到服务器。VHost 的配置非常简单:
server {
server_name static.server.local;
root /var/www/static;
## Default location
location / {
access_log off;
expires 0;
add_header Cache-Control private;
}
}
Run Code Online (Sandbox Code Playgroud)
当我们访问一个 HTML 文件(http://static.server.local/test.html)时,我们没有问题:只要文件没有改变,服务器就会返回一个代码304 Not Modified,并返回一个200 OK响应更改文件时修改的文件。
但是,对于 Javascript 或 CSS 文件,它的行为似乎有所不同。文件更改后,我们会按预期获得200 OK响应,但使用旧文本。
Nginx 中是否有可以解释这种行为的内部缓存机制?或者我们应该添加一些配置?
作为旁注,这是修改文件时 Nginx 返回的标头(似乎是正确的):
Accept-Ranges:bytes
Cache-Control:max-age=0
private
Connection:keep-alive
Content-Length:309
Content-Type:text/css
Date:Fri, 13 May 2011 14:13:13 GMT
Expires:Fri, 13 May 2011 14:13:13 GMT
Last-Modified:Fri, 13 May 2011 14:13:05 GMT
Server:nginx/0.8.54
Run Code Online (Sandbox Code Playgroud)
编辑
在使用expires指令和Cache-Control …
我有两个运行 Corosync 和 Pacemaker 的HA 负载平衡器(hollywood和wolfman)。所述eth1接口被连接到广域网,以及eth0接口的LAN,使用虚拟IP作为网关用于后端服务器。的eth1IPhollywood是xxx.xxx.195.45, 的eth1IPwolfman是xxx.xxx.195.46。该bindnetaddr在Corosync是xxx.xxx.195.32,同为广域网的网络地址和端口Corosync是默认的5405。
两台服务器上的相关IP表规则是:
*filter
--flush
:INPUT DROP
--append INPUT --protocol udp --destination-port 5404 --jump ACCEPT
--append INPUT --protocol udp --destination-port 5405 --jump ACCEPT
Run Code Online (Sandbox Code Playgroud)
这种设置似乎做工精细,但最初我加--in-interface eth1和--source xxx.xxx.195.46来wolfman,并--source xxx.xxx.195.45到hollywood。大多数情况下这似乎有效,但重新启动被动平衡器有时会终止负载平衡器之间的通信,将这些错误写入系统日志:
[TOTEM] 由于操作系统或网络故障,图腾无法形成集群。此消息的最常见原因是本地防火墙配置不正确。
因此,我认为所有 Corosync 流量直接在两个负载均衡器之间的简单信念似乎eth1是错误的,或者是其他原因导致了问题。
我想将5404/5405IPTables 中的端口锁定到集群。我需要做什么才能实现这一目标?
编辑: …