Как реализовать кэширование браузера в Nginx?
Здравствуйте! Перевел облачный сервер на Nginx + PHP-FPM. Ранее все настройки были под Apache c настройками в .htaccess:
Сейчас настройки Nginx:
Не понимаю, как EXPIRES CACHING перенести в Nginx?
Нашел в интернете старые настройки далекого 2013-2015 г., но не понимаю это оно или нет и вообще актуальность этого:
## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive on
ExpiresDefault "access plus 1 month"
ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType application/xml "access plus 0 seconds"
ExpiresByType application/json "access plus 0 seconds"
ExpiresByType application/pdf "access plus 1 day"
ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType image/jpg "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType video/ogg "access plus 1 month"
ExpiresByType audio/ogg "access plus 1 month"
ExpiresByType video/mp4 "access plus 1 month"
ExpiresByType video/webm "access plus 1 month"
ExpiresByType text/x-component "access plus 1 month"
ExpiresByType font/truetype "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
ExpiresByType text/css "access plus 2 months"
ExpiresByType application/javascript "access plus 2 months"
ExpiresByType text/javascript "access plus 2 months"
<IfModule mod_headers.c>
Header append Cache-Control "public"
</IfModule>
</IfModule>
Сейчас настройки Nginx:
server {
listen 80;
server_name example.com www.example.com;
root /home/sites/example.com;
index index.php;
client_max_body_size 30M;
location / {
root /home/sites/example.com;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_ignore_client_abort on;
fastcgi_param SERVER_NAME $http_host;
}
location ~ /\.ht {
deny all;
}
}
Не понимаю, как EXPIRES CACHING перенести в Nginx?
Нашел в интернете старые настройки далекого 2013-2015 г., но не понимаю это оно или нет и вообще актуальность этого:
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|ttf|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
try_files $uri @rewrite;
access_log off;
expires 10d;
break;
}
Комментарии: 2
То, что ты нашел в принципе актуально. Так и делают.
Попробуй вот такой конфиг
Попробуй вот такой конфиг
server {
listen 80;
server_name example.com www.example.com;
root /home/sites/example.com;
index index.php;
client_max_body_size 30M;
# Новый блок для статических файлов с кешированием
location ~* \.(jpg|jpeg|gif|png|svg|ico|pdf|mp4|webm|ogg|mp3|wav|ttf|otf|woff|woff2|eot)$ {
# Срок действия кеша в браузере (аналог Expires в Apache)
expires 1M; # access plus 1 month
# Заголовок для указания, что кеш публичный (аналог Header append Cache-Control "public")
add_header Cache-Control "public";
}
# Отдельный блок для CSS, JS (у них у вас срок больше)
location ~* \.(css|js)$ {
expires 2M; # access plus 2 months
add_header Cache-Control "public";
}
location / {
root /home/sites/example.com;
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php?q=$1 last;
}
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(.*)$;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_ignore_client_abort on;
fastcgi_param SERVER_NAME $http_host;
}
# Правило для запрета доступа к файлам Apache
location ~ /\.ht {
deny all;
}
}
Большое спасибо!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.