nginx и expires

imbalance
На сайте с 03.03.2007
Offline
240
587

Уважаемые коллеги,

Нужна помощь в ответе на простой вопрос.

Задача: для всех сайтов на сервере прописать expires 1y;

В файле конфиге nginx.conf - для каждого сайта, свой конфиг.

Например:

Напмриер: server {

listen *:80;

server_name domain.ru

rewrite ^(/manager/.*)$ https://$host$1 permanent;

error_page 404 = @fallback;

...

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {

root /var/www/v002149/data/www/domain.ru;

access_log /var/www/httpd-logs/domain.ru.access.log ;

access_log /var/www/nginx-logs/domain.ru isp;

}

location @fallback {

proxy_pass http://*:8080;

proxy_set_header Host $host;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_set_header X-Real-IP $remote_addr;

}

}

Мне нужно для всех сайтов пописать следующее:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {

expires 1y;

}

Если я правильно понимаю - для каждого сайта нужно прописывтаь отдельно, да ? Как прописать целиком для всех сайтов?

Artjom77
На сайте с 11.09.2007
Offline
75
#1

Да, для каждого отдельно.

Не знаю, может быть есть какое-то более изящное решение, но можно в соответствии со следующей концепцией:

Создать файл /etc/nginx/static-location.conf и положить в него:

location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpe?g|avi|zip|gz|bz2?|rar)$ {

expires 1y;
}

Затем перейти в /etc/nginx/sites-enabled/ (или где у вас конфиги для всех сайтов находятся) и выполнить:


perl -p -i.old -e 's|server {|server {\n include /etc/nginx/static-location.conf;\n|g' ./*.conf

Потом можно сделать rm -f ./*.conf.old, если все получилось правильно. Или просто бэкап конфигов заранее сделайте. :)

Проверить сайт на доступность из разных стран (http://check-host.net)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий