我尝试在nginx中实现以下指令以避免缓存css文件:
upstream turntown_stream {
ip_hash;
server turntown_host:9443;
}
location ~* \.(?:css)$ {
root /data/nginx/html;
expires 0;
}
location / {
root /data/nginx/html;
index index.html index.htm;
}
location /turntown/ {
proxy_cache_bypass $http_upgrade;
proxy_pass https://turntown_stream/turntown/;
# Web sockets
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
但是,每当我尝试应用上述指令时,在输入https:// {DOMAIN} .com / turntown addrress后到达网络浏览器的任何css文件都会以404响应到达。
有人可以告诉我我做错了什么。
答案 0 :(得分:0)
nginx
选择一个location
到process a request。
处理以location ~* \.(?:css)$
结尾的URI时,您的新location /turntown/
块优先于.css
块。
因此,任何以/turntown/
生成并以.css
结尾的URI都将被视为本地文件,并且该请求将不再向上游发送。
作为替代方案,expires
指令可以与map
一起使用。有关详细信息,请参阅this document。
例如:
map $request_uri $expires {
default off;
~*\.(css)(\?|$) 0;
}
map
指令放在http
块中。
expires $expires;
如果expires
指令放在server
块中,它将适用于所有匹配的URI,而不管用location
处理它们。