LINUX.ORG.RU

nginx заголовки у файлов и кеширование


0

1

Делаю конфиг, нужно чтобы данные передавались с заголовками, кеширующими данные в браузере.

Это задание, которое я особо не понимаю.

Чтобы данные кешировались, в секции location я добавил

expires 30d;

А вот про заголовки в мане написано мало. Единственное, что я более менее нашёл для этого:

sendfile on;

tcp_nopush on;

etag on;

Правильно ли я сделал, добавив эти 4 директивы для выполнения задания.


У гугла хорошо про это написано. https://developers.google.com/speed/docs/best-practices/caching

Если сервером отдается (по умолчанию отдается) Last-Modified, то Etag использовать не обязательно. expires 30d указано для всего или только для статики?

P.S. Еще открой отладчик в любом браузере (вкладка сеть) — там можно посмотреть заголовки.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 1)
Ответ на: комментарий от Black_Roland

expires 30d указано для всего или только для статики?

указал только для статики

там можно посмотреть заголовки

т.е. заголовки передаются по-умолчанию? Или есть директивы, которые за это отвечают?

Ещё вопрос, я свой конфиг делаю в

/etc/nginx/sites-enabled/project.conf Так принятно делать или

лучше просто менять?

/etc/nginx/nginx.conf

Вроде да, только приходится избавляться от дубликатов в обоих конфигах, в результате мой конфиг получается ущербным. Да и потом его будет неудобно переносить например, думаю. Жду совета.

mrXorg
() автор топика
Ответ на: комментарий от mrXorg

указал только для статики

Все верно тогда.

т.е. заголовки передаются по-умолчанию? Или есть директивы, которые за это отвечают?

О каких заголовках идет речь? Заголовки передаются всегда: и на сервер и от сервера. От сервера всегда передается Connection, Content-Type, а все остальное уже на усмотрение веб-сервера. Nginx по умолчанию еще передает LastModified. Expires по умолчанию не передается, но ты его уже включил.
Для работы браузерного кэша достаточно всего двух заголовков: LastModified и Expires. LastModified и так передается, а Expires ты уже включил — больше ничего не требуется, все должно работать. Можешь на всякий случай проверить в отладчике браузера что там и куда передается.

/etc/nginx/sites-enabled/project.conf Так принятно делать или

Это все выдумки Debian'щиков. Предполагается что ты пишешь конфиг в sites-available и затем специальной командой «включаешь» этот конфиг. Название команды я не помню, но она просто делает симлинк в sites-enabled. Как по мне это бесполезный геморой.
Я бы создал директорию /etc/nginx/vhosts.d и /etc/nginx/conf.d. в /etc/nginx/nginx.conf прописал бы:

http {
  include /etc/nginx/vhosts.d/*.conf;
  include /etc/nginx/conf.d/*.conf;
}
И в vhosts.d складывал бы конфиги сайтов (какие-то server_name, rewrite или proxy_pass, например), а в conf.d какие-то общие конфиги (типа gzip, php-fastcgi и пр.).

Если хочешь, то можешь делать как задумано в твоем дистрибутиве. Создавай конфиги сайтов в sites-available, а в sites-enabled делай симлинки на конфиги из sites-available. Общие конфиги тогда будут в nginx.conf.

Black_Roland ★★★★
()
Последнее исправление: Black_Roland (всего исправлений: 5)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.