nginx кэширование, проблема

Обсуждение настройки и работы сервисов, резервирования, сетевых настроек и вопросов безопасности ОС для молодых и начинающих системных администраторов.

Модераторы: SLEDopit, Модераторы разделов

poiuty
Сообщения: 6
ОС: ubuntu

nginx кэширование, проблема

Сообщение poiuty »

OS: ubuntu 8.04
nginx 8.54

Нужно - отдавать авториз. пользователям динамику.Не авториз. статику(кэшировать и отдавать).

Часть из конфинга:

Код: Выделить всё

proxy_cache_path /var/cache/nginx levels= keys_zone=mycache:150m;

...
if ($http_cookie !~ "userid" ) {
return 412;
}
...
error_page 412 = @cached;
location @cached {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache mycache;
proxy_cache_valid any 5m;
proxy_cache_key "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
}


Стартую, начинаю проверять.Создаю test.php в него пишу

Код: Выделить всё

<? $n=rand(1,100); echo $n; ?>
- открываю его, получаю статику - например $n=5.Через 5 минут получу новый результат например $n=10.Вроде все ОК.Далее запихиваю такой же код в тело сайта - обновляю страничку сайта - получаю каждый раз новое число.Прихожу к выводу, что отдает "динамику", а не статику.
Лезу проверять userid в куках.Вроде нет.Удаляю все куки на всякий случай.Лезу в /var/cache/nginx - файлы кеша создает(права на папку стоят).Снова обновляю страницу несколько раз - каждый раз новое $n.
Спасибо сказали:
Аватара пользователя
KiWi
Бывший модератор
Сообщения: 2521
Статус: статус, статус, статус

Re: nginx кэширование, проблема

Сообщение KiWi »

Как минимум -- наличие if-modified-since в ключе абсолютно лишнее.
Спасибо сказали:
poiuty
Сообщения: 6
ОС: ubuntu

Re: nginx кэширование, проблема

Сообщение poiuty »

Согласен - лишнее, но почему кэширует test.php с кодом echo rand(1,100) - а страницы сайта нет.Могу дать url в личку(на котором тестирую)
изменил на:

Код: Выделить всё

proxy_cache_key "$host|$request_uri|$is_args";

Тоже самое.

Без условий сделал:

Код: Выделить всё

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=cache:10m inactive=60m;
...
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

proxy_cache cache;
proxy_cache_key "$host|$request_uri|$is_args";
proxy_hide_header "Set-Cookie";
proxy_ignore_headers "Cache-Control" "Expires";
proxy_cache_valid 200 302 304 5m;
proxy_cache_valid 301 1h;
proxy_cache_valid 503 4s;
proxy_cache_valid any 1m;
proxy_cache_use_stale http_502 http_503 http_504;
}


Все равно кеширует только test.php
Спасибо сказали: