SSI обработка ошибок подзапросов

rimeko nginx-forum на nginx.us
Вт Июл 26 03:49:26 UTC 2011


Здравствуйте.

Как сделать, чтобы ssi выдавал ошибку 404
на весь запрос, когда бакенд возвратил
404 на подзапрос?
Сейчас соответствующий блок просто не
выводится.

Теперь подробности.

Сделано так:

ssi_types text/xml;
location /ssi/ {
fastcgi_pass unix:/var/run/fcgiperl/fcgiperl.sock;
include fastcgi_params;
fastcgi_cache off;
}
location ~ ^(.*)/index\.xtpl$ {
types { text/xml xtpl; }
ssi on;
}

Проверяю:

$ wget http://localhost/ssi/err
Распознаётся localhost... 127.0.0.1
Устанавливается соединение с
localhost|127.0.0.1|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 404 Not
Found
2011-07-24 14:19:55 ОШИБКА 404: Not Found.

В логе:
127.0.0.1 - - [skip] "GET /ssi/err HTTP/1.0" 404 103 "-" "Wget/1.12
(linux-gnu)" "-"

Не вдаваясь в подробности, бакенд
просто возвращает на любой запрос:
Status: 404 Not Found

Делаю темплейт /index.xtpl

<?xml version="1.0" encoding="UTF-8"?>
<page file="<!--# echo var="request_filename" -->">
<uri><!--# echo var="uri" --></uri>
<request_uri><!--# echo var="request_uri" --></request_uri>
<!--# include virtual="/ssi/err" -->
</page>

$ wget http://localhost/index.xtpl

Распознаётся localhost... 127.0.0.1
Устанавливается соединение с
localhost|127.0.0.1|:80... соединение установлено.
Запрос HTTP послан, ожидается ответ... 200 OK
Длина: нет информации [text/xml]
Saving to: «index.xtpl»

Получаю index.xtpl от сервера:

<?xml version="1.0" encoding="UTF-8"?>
<page file="/var/www/localhost/htdocs/index.xtpl">
<uri>/index.xtpl</uri>
<request_uri>/index.xtpl</request_uri>
</page>

А хочу получить ошибку 404.

В логах вижу:
127.0.0.1 - - [skip] "GET /index.xtpl HTTP/1.0" 404 0 "-" "Wget/1.12
(linux-gnu)" "-"
127.0.0.1 - - [skip] "GET /index.xtpl HTTP/1.0" 200 304 "-" "Wget/1.12
(linux-gnu)" "-"

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,212933,212933#msg-212933



Подробная информация о списке рассылки nginx-ru