On Fri, Jul 13, 2007 at 06:07:26PM +0400, dwl wrote:
> Помогите понять причину странного поведения директивы add_after_body.
> Цель: Необходимо длинную подпапку с сайта2 показать как корень сайта1.
> И если это текстовый документ (не картинка), то снизу вывести еще текст
> (/help.html)
> Пишу конфиг:
>
> server {
> listen 1.1.1.1:80;
> server_name site1.com;
> root /www;
>
> access_log /log/access_log;
> error_log /log/error_log error;
>
> location = / {
> proxy_pass http://site2.com/path1/start.html
> proxy_set_header Host site2.com;
> add_after_body /help.html;
> }
> location / {
> rewrite ^/(.+)$ /path1/$1 break;
> proxy_pass http://site2.com;
> proxy_set_header Host site2.com;
> add_after_body /help.html;
> }
> location ~* \.(png|gif|jpg|jpeg|css)$ {
> rewrite ^/(.+)$ /path1/$1 break;
> proxy_pass http://site2.com;
> proxy_set_header Host site2.com;
> }
> location = /help.html {
> }
> location = /favicon.ico {
> }
> }
>
> В doc_root сайта1 лежат только 2 файла help.html & favicon.ico,
> остальное проксируется.
>
> В Opera работает. Так же все видно, если скачать страницу с помощью
> lynx, wget, fetch.
> А вот IE & FF не показывают тело help.hml, т.е. пусто, видно только
> конец исходной страницы (</html> ) и дальше нечего.
> Почему такое поведение? С чем это может быть связано?
Смотрите, как сделано на narod.ru.
Возможно, IE и FF после /html воспринимают только javascript.
> И почему nginx не пишет в лог запрос к файлу /help.html, даже в том
> случае, когда он его отдал (случай с Opera).
Это внутренний подзапрос, он не пишется в логи.
--
Игорь Сысоев
http://sysoev.ru