Nginx优化后图片显示问题

Nginx优化后图片显示问题

我使用 gtmetrix 进行了一些优化,以提高网站性能。例如启用 gzip 压缩等。

当我尝试使用 browserling.com 等在线服务测试网站时,图像没有显示。

https://programlama.tk

当我尝试从服务器连接时。例如 192.168.1.xx,它工作正常。

/etc/nginx/nginx.conf 的相关部分如下:

##
# Gzip Settings
##

gzip on;

gzip_vary on;
gzip_proxied any;
# gzip_comp_level 6;
# gzip_buffers 16 8k;
# gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

并且在 /etc/nginx/sites-enabled/programlama.tk 中我添加了这部分。

location ~*  \.(jpg|jpeg|png|gif|ico)$ {
    expires 365d;
}

location ~*  \.(css|js)$ {
    expires 30d;
}

location ~*  \.(pdf)$ {
    expires 30d;
}

更新 :

我怀疑问题出在位置过期部分的服务器块中。

server {
    server_name programlama.tk;

    location /static {
        limit_except GET HEAD POST {
             deny all;
        }
        include yasaklananlar.conf;
        # alias
    }

    location / {
        limit_except GET HEAD POST {
             deny all;
        }
        include yasaklananlar.conf;
        include proxy_params;
        # proxy_pass
    }

    location ~*  \.(jpg|jpeg|png|gif|ico)$ {
        expires 365d;
    }

    location ~*  \.(css|js)$ {
        expires 30d;
    }

    location ~*  \.(pdf)$ {
        expires 30d;
    }

    # server settings

}

如果我删除服务器块中的位置过期部分并重新启动 Nginx 服务器,它就可以正常显示图像。

答案1

Nginx 选择一个位置来处理请求

因此当正则表达式 location被添加来expires在扩展上设置值,它会破坏您的location /static {...}location / {...}配置。

除了使用location来设置之外expires,您还可以使用 来map代替。请参阅这个文件了解详情。

例如:

map $request_uri $expires {
    default                           off;
    ~*\.(jpg|jpeg|png|gif|ico)(\?|$)  365d;
    ~*\.(css|js|pdf)(\?|$)            30d;
}    

server {
    ...
    expires $expires;

    location /static { ... }
    location / { ... }
    ...
}

相关内容