我有以下问题。
我正在使用 nginx 服务器。为了正确提供图片,我添加了以下位置规则:
location /images/ {
alias /srv/mysite/images/;
autoindex off;
}
一切正常。但如果我添加浏览器缓存(找到这里)
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
未提供任何图片
有人能帮忙吗?谢谢。
编辑
完整配置如下:
server {
#listen 80 is default
server_name www.mysite.com;
return 301 $scheme://mysite.com$request_uri;
}
server {
listen 80;
server_name mysite.com;
access_log /var/log/nginx/mysite.com.log;
error_log /var/log/nginx/mysite.com.err;
location / {
include uwsgi_params;
uwsgi_pass unix:///var/uwsgi/mysite.com.node1.sock;
}
location = /robots.txt {
alias /srv/mysite.com/robots.txt;
}
location /m/ {
alias /srv/mysite.com/node1/static/;
autoindex off;
expires max;
}
location /upfiles/ {
alias /srv/mysite.com/upfiles/;
autoindex off;
}
##
# Gzip Settings
##
gzip on;
gzip_disable "msie6";
gzip_comp_level 6;
#gzip_comp_level 9;
gzip_min_length 1100;
gzip_buffers 16 8k;
gzip_proxied any;
# gzip_http_version 1.1;
gzip_types text/plain application/xml text/css text/js text/xml application/x-javascript text/javascript application/json application/xml+rss;
####
##Browser Cache
####
location ~* \.(?:ico|css|js|gif|jpe?g|png)$ {
expires 30d;
add_header Pragma public;
add_header Cache-Control "public";
}
}
答案1
您没有使用默认的根指令,因此您应该/alias srv/mysite/images/;
在 location 指令中添加。Nginx 将在那里找到文件,并使用适当的过期标头(您的配置中为 30 天)传递给客户端