Извиняюсь, всё же ступил. Оказалост дело в том, что в конце описан ещё
один location для выдачи статики
location ~*^.+.(htm|html|gz)$ {
root /data/www/htdocs/cache;
expires 600s;
}
Получается, что по запросу test.htm выполнялся именно он. А проверка
на файл не отрабатывала. Тогда вопрос по прежнему актуален. Как
заставить отработать проверку на файл прежде чем вышеописанный
location.
Можно "if (!-f $request_filename)" поставить на уровне сервера.
On Wed, 21 Jun 2006, Aleksej Novikov wrote:
Спасибо, Игорь, но всё без именений.
nginx version: nginx/0.3.49
По прежнему 404 ошибка и никаких обращений к backend.
Тогда нужен отладчоный лог.
On Wed, 21 Jun 2006, Aleksej Novikov wrote:
Может я туплю, однако никак не выходит.
Задача проверить существование файла, и если его нет, то сделать
запрос на backend.
Вот такой вот конфиг у меня.
server {
listen 80;
server_name cache;
access_log /var/log/nginx/cache.access.log;
location / {
root /data/www/htdocs/cache;
autoindex on;
if (!-f $request_filename) {
rewrite (.*) /index.php?rfname=$request_filename last;
}
proxy_pass http://127.0.0.1:8888/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Обращаюст к файлу test.htm (понятное дело он не существует)
на экране вижу - 404 by nginx.
А в логе только одна строка.
10.10.10.2 - - [21/Jun/2006:12:12:47 +0300] "GET /test.htm HTTP/1.1" 404 169 "-"
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4"
Подскажите плиз, что не так ?
У меня подобный конфиг выдаёт 500. Нужно примерно так: