Nginx-ru mailing list archive (nginx-ru@sysoev.ru)
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: проблема с кэшированием
On Mon, Jun 07, 2010 at 03:06:54PM +0300, Alex Smorodin wrote:
> Добрый день. ubuntu с ядром 2.6.27-11-generic,nginx version: nginx/0.7.65.
> Хочу настроить кэширование в nginx. На апач пропускаю все post запросы,
> так же проверяю куку session, она устанавливаетcя, когда пользователь
> логинится, соответственно эти страницы мы не кэшруем. Проблема в следующем:
> в кэш иногда попадают внутренние страницы сайта, если не устанавливать
> параметр "proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;".
> Если его добавить, все работает нормально. Непонятно, как он может влиять?
> Для проверки добавил в ключ proxy_cache_key куку session, так вот кука
> попадает в кэш (хотя явно прописано условие не кэшировать страницу).
> Вот конфиг:
> server {
> listen 192.168.0.32:9081;
> server_name domain.com;
> access_log /var/log/nginx/domain.com/nginx-access.log combined;
> error_log /var/log/nginx/domain.com/nginx-error.log error;
> proxy_temp_path /var/cache/nginx/domain.com;
> location @nocached {
> proxy_pass http://192.168.0.32:81;<http://192.168.0.32:81/;>
> proxy_set_header Host domain.com;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> }
> location / {
> proxy_pass http://192.168.0.32:81;<http://192.168.0.32:81/;>
> proxy_set_header Host domain.com;
> proxy_set_header X-Real-IP $remote_addr;
> proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
> proxy_next_upstream error timeout invalid_header http_500
> http_503;
> if ($cookie_session) {
> return 412;
> }
> if ($request_method = POST ) {
> return 412;
> }
> error_page 412 = @nocached;
> proxy_cache one;
> proxy_cache_key
> "$request_method|$is_args|$host|$request_uri|$cookie_session";
> proxy_hide_header "Set-Cookie";
> proxy_ignore_headers "Cache-Control" "Expires";
> proxy_cache_valid 200 301 302 304 1h;
> }
> }
Возьмите 0.8.40 и используйте такую конфигурацию:
server {
listen 192.168.0.32:9081;
server_name domain.com;
access_log /var/log/nginx/domain.com/nginx-access.log combined;
error_log /var/log/nginx/domain.com/nginx-error.log error;
proxy_temp_path /var/cache/nginx/domain.com;
location / {
proxy_pass http://192.168.0.32:81;
proxy_set_header Host domain.com;
proxy_set_header X-Real-IP $remote_addr;
proxy_next_upstream error timeout invalid_header http_500 http_503;
proxy_cache one;
proxy_no_cache $cookie_session;
proxy_cache_key domain.com$uri?$args;
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_valid 200 301 302 304 1h;
}
}
--
Игорь Сысоев
http://sysoev.ru
_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru
|