ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re[2]: Проблема: upstream buffer is too small


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re[2]: Проблема: upstream buffer is too small
  • From: Илья Винокуров <ilvin@xxxxxxx>
  • Date: Tue, 28 Sep 2010 12:35:45 +0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mail.ru; s=mail; h=Message-Id:Content-Transfer-Encoding:Content-Type:Reply-To:In-Reply-To:References:Date:Mime-Version:Subject:To:From; bh=jhxkM1+K1VK6QWQXC11XgEtyReVwdBBLRY00jbMuGZs=; b=ikr6zGRvAizG7JW/OV7pEFlBSMtO5no4IJ9hTBQfH4AF35CxcWFRQK7+Apj5bJvPcvSknPl4ZqOfA9mRgdWfVpF+tAc8z2l37DTdwkTIYgfDJOU9sjq8Faj6gYoLGpO2;
  • In-reply-to: <20100927140150.GP44164@xxxxxxxxxx>
  • References: <20100927140150.GP44164@xxxxxxxxxx>

> Без сторонних модулей должна сработать какая-то такая схема с 
> двойным проксированием:
> <!--#include virtual="/precache/..." wait="yes" -->
> location /precache/ {
> proxy_pass http://localhost/realcache/;
> proxy_method HEAD;
> proxy_pass_request_body off;
> proxy_pass_request_headers off;
> }
> location /realcache/ {
> proxy_pass ...service...;
> proxy_cache ...
> }
> Детали:
> - В подзапросе из ssi метод при проксировании ставится в HEAD, 
> чтобы тела ответа с той стороны не присылали.
> - При втором проксировании с proxy_cache кеш сам поменяет запрос 
> на GET и закеширует результат.
> Как вариант - опять же с двойным проксированием, но проксировать 
> на сервис, и при втором проксировании добавлять X-Accel-Redirect 
> на реальный бекенд.  Это наверное несколько прямее чем 
> Maxim Dounin

Здравствуйте, Максим!
Не работает такая схема :(
По этой схеме nginx в локейшн /realcache/ пробрасывает метод запроса HEAD.
Не хватает директивы proxy_set_method.

Сделал файлик precache.html, в котором прописал
<!--#include virtual="/realcache/..." wait="yes" -->
А потом
 location /precache/ {
 proxy_pass http://localhost/precache.html;
 proxy_method HEAD;
 proxy_pass_request_body off;
 proxy_pass_request_headers off;
 }
 location /realcache/ {
 proxy_pass ...service...;
 proxy_cache ...
 }

Так оно тоже не работает - nginx на такие запросы не генерирует тело ответа.

Смотрю в сторону ngx_http_sub_module, так там тоже все не гладко:
Штатное не понимает регулярку, а без регулярки оно никуда не годится, вот если 
бы там были директивы:
sub_filter_start    # Сигнатура, с которой начать вырезать
sub_filter_stop     # Сигнатура, на какой закончить вырезать
sub_filter_replace  # Что вставить взамен

То я свой прекешер обрамил бы длинными символьными последовательностями и затем 
вырезал бы результат из страницы...

С почтением,
  Илья Винокуров.

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.