我在定义缓存静态文件的规则时遇到了一些麻烦。我找到了这个解决方案:
location ~* \.(ico|js|css|png|gif|jpe?g)$ {
expires 7d;
}
实际上看起来像我需要的东西。问题是,如果我将此代码包含到我的NGINX.conf中,则不再提供静态文件,并且我的站点为空。可能导致此结果的任何想法/提示?也许我必须补充一点,静态文件分布在不同的目录中:/。我的NGINX配置文件如下所示:
server {
server_name bla.domain.com;
listen 80;
root /var/repo/;
location / {
default_type text/html;
index index.html;
if ($request_method !~ ^(GET)$ ) {
return 444;
}
if ($http_user_agent ~* LWP::Simple|BBBike|wget) {
return 403;
}
if ( $http_referer ~* (babes|forsale|girl|jewelry|love|nudit|organic|poker|porn|sex|teen) ) {
return 403;
}
}
location /bf/football/ {
alias /var/repos/f20;
}
location /bf/f20/ {
alias /var/repo/f20;
}
location /bf/zoo/ {
alias /var/repo/zoo/;
}
location /kbloader/ {
alias /var/repo/kbloader/;
}
}
如果有人可以帮我解决这个问题或指出我正确的方向,那会很好。
干杯, Szop
答案 0 :(得分:42)
将其放在您的其他位置区块之前:
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Vary Accept-Encoding;
access_log off;
}
这应该有效。
你也可以使用它:
## All static files will be served directly.
location ~* ^.+\.(?:css|cur|js|jpe?g|gif|htc|ico|png|html|xml|otf|ttf|eot|woff|svg)$ {
access_log off;
expires 30d;
## No need to bleed constant updates. Send the all shebang in one
## fell swoop.
tcp_nodelay off;
## Set the OS file cache.
open_file_cache max=3000 inactive=120s;
open_file_cache_valid 45s;
open_file_cache_min_uses 2;
open_file_cache_errors off;
}
答案 1 :(得分:4)
将其放在nginx配置文件中的服务器部分之前,如下所示:
. . .
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/javascript max;
~image/ max;
}
server {
listen 80 default_server;
listen [::]:80 default_server;
expires $expires;
. . .
〜image将处理所有类型的图像(而不是对其进行硬编码)
有关如何处理nginx缓存的更多信息,请参见link