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