Комментарии 27
Наверное, стоит ещё исключить POST-запросы, заключив всё в условие
if ($request_method = GET ) {
…
}
+4
Каким образом? У меня вылетает например:
[emerg]: «fastcgi_index» directive is not allowed here in /usr/local/nginx/conf/nginx.conf:182
[emerg]: «fastcgi_index» directive is not allowed here in /usr/local/nginx/conf/nginx.conf:182
0
Эм… location { } внутри server { } быть должен, соблюдается? У меня такое работает точно.
0
Игорь, location-то внутри server разумеется, а вот куда воткнуть if ($request_method = GET )?
0
Внутрь location, в него загнать все про кеш, т.е.
if (… ) {
fastcgi_pass_header Cookie;
…
}
if (… ) {
fastcgi_pass_header Cookie;
…
}
0
Начиная с 0.7.48, по умолчанию кэшируются только GET и HEAD. Чтобы POST кэшировался нужно добавить
fastcgi_cache_methods GET HEAD POST;
fastcgi_cache_methods GET HEAD POST;
+3
Спасибо!
* Пора учить себя читать changelog'и
* Мне все-таки удасться сегодня поспать! =)
* Пора учить себя читать changelog'и
* Мне все-таки удасться сегодня поспать! =)
0
Спасибо, Игорь! Нужно действительно читать changelog, а то в документации про это не написано.
+1
Спасибо!
N.B. Сделайте уже кто-нибудь сайт «Секреты Nginx'а» =)
N.B. Сделайте уже кто-нибудь сайт «Секреты Nginx'а» =)
+1
Зачем сайт? Достаточно тут правильно расставлять теги
0
он уже есть — sysoev.ru/nginx/docs/ :)
+4
НЛО прилетело и опубликовало эту надпись здесь
Это чтоб скрипт не считал себя умнее сервера и не мешал кешировать как ему нравится
0
Если не игнорировать эти заголовки, nginx ведёт себя согласно их содержанию.
0
НЛО прилетело и опубликовало эту надпись здесь
Смотря что указано в них:
0
Извиняюсь, не дописал.
Если в Expires указана дата в будущем, будет отдавать вариант из кеша вплоть до этой даты;
Если в прошлом — будет постоянно запрашивать с FastCGI сервера;
Аналогично и с Cache-Control, см. RFC 2616, section 14
Если в Expires указана дата в будущем, будет отдавать вариант из кеша вплоть до этой даты;
Если в прошлом — будет постоянно запрашивать с FastCGI сервера;
Аналогично и с Cache-Control, см. RFC 2616, section 14
0
Не плохо бы добавить как вообще не кешировать для некоторых юзеров, например залогиненных (можно по кукам определять)
Я такое использовал когда еще не было встроенного кеширования (сам генерировал статику). Как сейчас такое сделать с внутренним кешем даже не смотрел.
Я такое использовал когда еще не было встроенного кеширования (сам генерировал статику). Как сейчас такое сделать с внутренним кешем даже не смотрел.
set $django 1; set $args_old ""; if ($is_args = "?") { set $args_old ?$args; } location / { if (-f $request_filename/index.html$args_old) { set $django 0; } if ($http_cookie ~* "sessionid=([^;]+)(?:;|$)" ) { set $django 1; } if ($request_method = POST) { set $django 1; } if ($django = 0) { rewrite (.*) $1/index.html$args_old break; } if ($django) { fastcgi_pass unix:/www/myserver/server.sock; break; } index index.html; access_log /var/log/nginx/myserver.log main; }
0
Если с последними версиями nginx возникли проблемы с передачей cookies или авторизацией — решение:
fastcgi_pass_header «Set-Cookie»;
вместо
fastcgi_pass_header Cookie;
fastcgi_pass_header «Set-Cookie»;
вместо
fastcgi_pass_header Cookie;
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Кеширование FastCGI-запросов в nginx