跳到主要内容

Nginx 开启图片缓存与 Gzip

设置图片缓存 #

在Nginx配置文件中添加如下设置

server {
    server_name your-domain.com;

		location /route1 {
				# settings here
    }
    
		location /route2 {
				# settings here
    }
		
    location ~* ^/route1/.+\.(jpg|jpeg|png|gif|ico)$ {
        root /your/image/location;
        try_files $uri $uri/ =404;
        expires 2d;
        add_header Cache-Control "public";
    }
    location ~* ^/route2/.+\.(jpg|jpeg|png|gif|ico)$ {
        root /your/second/image/location;
        try_files $uri =404; # Important to serve static files correctly
        expires 2d;
        add_header Cache-Control "public";
    }
    
    # other settings

}

正则表达式解读:

  • ~*:这个修饰符告诉Nginx,正则匹配不区分大小写。~ 表示正则表达式匹配,*使其不区分大小写。这意味着,无论请求是 .JPG 还是 .jpg,都将匹配。
  • ^:这个符号在正则表达式中用来表示字符串的开始。在这里,它意味着匹配必须从请求URI的开始处开始。
  • /route1/:这部分指定了必须出现在 ^ 之后的请求URI开头的路径。所以,请求URI必须以 /route1/ 开头才能匹配。
  • .+:在正则表达式中,. 匹配任何单个字符(除了行终止符),+ 表示前面的元素“一个或多个”。所以,.+ 匹配一个或多个任意字符,确保在 /route1/ 之后有一些内容,然后才是文件扩展名。
  • \.:反斜杠 \ 是正则表达式中的转义字符,在这里用来表示后面的点 . 应被视为字面上的点字符,而不是正则表达式中“任何单个字符”的特殊含义。
  • (jpg|jpeg|png|gif|ico):这是一个由括号 () 表示的组,包含由管道 | 字符分隔的几个选项,该字符充当“或”运算符。这意味着URI可以以这些文件扩展名中的任何一个结束,才被视为匹配。
  • $:这个符号在正则表达式中用来表示字符串的结束。它表示模式必须匹配到请求URI的末尾。

设置开启Gzip #

在Nginx配置文件中添加如下设置

server {
    server_name your-domain.com;

    location / {
        root /your/files/location;
        try_files $uri $uri/ /index.html;

        # Enable gzip compression
        gzip on;
        gzip_vary on;
        gzip_min_length 1000;
        gzip_proxied any;
        gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    }
}