对于不同的网站部分,我们使用不同的caching标题。 例如: /wp-admin部分根本不应该被caching,并且/blog部分只有4个小时,而不是默认的2天。
目前我已经通过重复location来解决这个问题,但是这导致了一个相当冗长的文件。 有一个更简洁的方法来实现这一点?
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; } }
使用标准的NGINXconfiguration没有办法做到这一点。
要清理您的configuration(不使用外部工具),将通用configuration移动到它自己的文件中,并从每个部分包含它:
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; }
site.conf :
location /wp-admin/ { etag off; if_modified_since off; add_header Last-Modified ""; add_header Cache-Control no-cache; include php.conf; }
NGINX因高级configuration需要大量重复而臭名昭着。