对于网站的不同部分,我们使用不同的缓存标头。例如:部分/wp-admin
根本不应该缓存,/blog
部分仅缓存 4 小时,而不是默认的 2 天。
目前我已经通过重复 -blocks 解决了这个问题location
,但这会导致文件非常冗长。有没有更简洁的方法来实现这一点?
当前 nginx 配置示例
location /wp-admin/ {
etag off;
if_modified_since off;
add_header Last-Modified "";
add_header Cache-Control no-cache;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location / {
expires 2d;
add_header Cache-Control "public";
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
location /blog {
expires 4h;
add_header Cache-Control "public";
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
答案1
无法使用标准 NGINX 配置来做到这一点。
为了整理您的配置(不使用外部工具),请将通用配置移到其自己的文件中并将其包含在各个部分中:
php.conf:
try_files $uri $uri/ /index.php?$args;
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php-fpm/php-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
站点配置文件:
location /wp-admin/ {
etag off;
if_modified_since off;
add_header Last-Modified "";
add_header Cache-Control no-cache;
include php.conf;
}
NGINX 因需要大量重复进行高级配置而臭名昭著。