Vladimir Rusinov | 1 Apr 08:50
Gravatar

кеширование POST-запросов

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

Хотелось бы вернутья к дискуссии об отключении буферизации определенных POST-запросов. Проболема естественно, в процентиках, которые показывают аплоад файла.
Менять приложение достаточно пробоематично, так что хотелось бы узнать, будет ли это вообще когда-нибудь, и может у кого-нибудь есть соответствующий патчик?

--
Vladimir Rusinov
Voronezh, Russia
UNIX Admin <at> Murano Software

Alexey Vlasov | 1 Apr 09:22
Picon
Favicon

Transfer-Encoding: chunked

Привет друзья. 

А можно ли nginx'у запретить отдавать контент chunk'ми?

P.S. Nginx в качестве frontend перед Apache'ем.

--

-- 
Alexey Vlasov

NomadRain | 1 Apr 10:13
Picon
Favicon

Re: smtp-прокси без авторизации

В сообщении от Tuesday 01 April 2008 00:28:57 Leonid Evdokimov написал(а):
> Maxim Dounin wrote:
> >> Возможно ли использовать smtp-прокси в качестве
фронтенда для почтовой
> >> системы без использования авторизации? Устроил бы
вариант как с
> >> напильником, так и без него. Почтовый сервер
поддерживает xclient.
В аттаче ещё один костыль на эту тему и мануал.
Накладывается на 0.5.35, возможно будет полезен.

Файл конфигурации

mail { server_name some-mail.com; auth_http 192.168.0.1:1666/nginxauth.cgi; proxy_pass 192.168.0.2:25; server { listen 25; protocol mx; timeout 300s; } }

Протокол

Для работы nginx в качестве smtp фронтэнда к MX'ам в файле конфигурации необходимо задать протокол "mx"

Хттп-скрипт

URL для хттп-авторизации задается по-прежнему - директивой auth_http

Смтп-бэкенд

В оригинале, nginx получает адрес/порт смтп-сервера в заголовках от хттп-скрипта. Для протокола mx возможно задавать смтп-бэкенд в конфигурационном файле при помощи знакомой нам по работе с хттп-модулями директивы proxy_pass. Если бэкенд не задан - он может быть взят из всё тех-же хттп заголовков. (По правде-говоря - бэкэнд задаётся в конфиге не только для "mx" протокола - он _просто_задаётся_ для любого протокола.) Если его нет ни в конфиге ни в заголовках - клиенту отдаётся ошибка. Адрес бэкэнда из заголовков естественным образом имеет приоритет над заданным в конфиге. Т.е. это даёт нам возможность для отдельной сессии переопределить бэкэнд.

Заголовки хттп

На вход хттп-скрипта авторизации даются следующие хттп-заголовки:
Host: 192.168.0.1
Client-Helo: test.org
Client-Mail: test <at> test.org
Client-Rcpt: to <at> tset.ru
Client-IP: 192.168.0.3
Тут всё понятно. Ответить скрипт должен как-минимум: Auth-Status: Который может быть: OK, WAIT, Или любой фигнёй текстуально описывающей ошибку. В дополнение к последнему варианту статуса может задаваться smtp-код ответа: Auth-Error-Code: 550 Который будет подставлен перед текстуальным статусом в smtp-ответе клиенту. В совою очередь Auth-Status: WAIT дополняется заголовком: Auth-Wait: время указывающим время таймаута для WAIT Также, для отдельно взятой смтп-сессии мы можем переопределить заданный в конфиге бэкенд при помощи заголовков: Auth-Server: Auth-Port: для адреса/имени и порта соответственно. Для передачи произвольной информации смтп-бэкэнду можно использовать заголовок: Auth-Helo-Addition: что-то там который через пробел добавится к клиентскому HELO.

Примеры сессий

Входящее соединение говорит нам, а мы ему:

220 tset.org ESMTP ready HELO test.org 250 tset.org MAIL FROM: test <at> test.org 250 2.0.0 OK RCPT TO: to <at> tset.ru

В этот момент мы начинаем говорить с хттп-сервером так:

GET /nginxauth.cgi HTTP/1.0 Host: 192.168.0.1 Client-Helo: test.prg Client-Mail: test <at> test.org Client-Rcpt: to <at> tset.ru Client-IP: 192.168.0.3 Auth-Status: Temporary unavailable

И как результат клиенту отдается:

535 5.7.0 Temporary unavailable
Также, для ошибки задаваемой заголовком Auth-Status: мы можем задать свой код, при помощи заголовка Auth-Error-Code:

То-есть хттп-сессия будет выглядеть так:

GET /nginxauth.cgi HTTP/1.0 Host: 192.168.0.1 Client-Helo: test.org Client-Mail: test <at> test.org Client-Rcpt: to <at> tset.ru Client-IP: 192.168.0.3 Auth-Status: Temporary unavailable Auth-Error-Code: 550

А смтп-сессия, соответственно так:

220 tset.org ESMTP ready HELO test.org 250 tset.org MAIL FROM: test <at> test.org 250 2.0.0 OK RCPT TO: to <at> tset.ru 550 Temporary unavailable
X-Face
Picon
Favicon
Gravatar

urlencoded в значение cookie userid это нормально?

Добрый день.

Сейчас в error.log обнаружил что разбор userid куки
закончился с ошибкой
"client sent invalid userid cookie".

Проблема в том что он послал значение куки
пропущенное через
urlencoded. Т.е. NS1DwkfyEM%2FBdjKUAxkUAg%3D%3D.

Возникает вопрос, это поведение для клиента
нормальное (urlencoded'ить
значение куки) или нет?

--

-- 
| |*| |  Kirill A. Korinskiy <catap@...>
| | |*|  proud (maniac)? (developer|hacker)
|*|*|*|  http://catap.ru/ - +7 (916) 3-604-704 - xmpp:catap@...
Igor Sysoev | 1 Apr 15:13
Picon

Re: urlencoded в значение cookie userid это нормально?

On Tue, Apr 01, 2008 at 04:41:16PM +0400, Kirill A. Korinskiy wrote:

> Сейчас в error.log обнаружил что разбор userid куки
закончился с ошибкой
> "client sent invalid userid cookie".
> 
> Проблема в том что он послал значение куки
пропущенное через
> urlencoded. Т.е. NS1DwkfyEM%2FBdjKUAxkUAg%3D%3D.
> 
> Возникает вопрос, это поведение для клиента
нормальное (urlencoded'ить
> значение куки) или нет?

Ненормальное. У меня такие ошибки - одна при на
примерно миллион запросов
из реального мира.

--

-- 
Игорь Сысоев
http://sysoev.ru

Picon
Favicon

Re: кеширование POST-запросов


Vladimir Rusinov пишет:
> Здравствуйте.
>
> Хотелось бы вернутья к дискуссии об отключении
буферизации 
> определенных POST-запросов. Проболема естественно, в
процентиках, 
> которые показывают аплоад файла.
> Менять приложение достаточно пробоематично, так
что хотелось бы 
> узнать, будет ли это вообще когда-нибудь, и может у
кого-нибудь есть 
> соответствующий патчик?
>
http://blog.new-bamboo.co.uk/2007/11/23/upload-progress-with-nginx
Но у меня так и не вышло это настроить, может Вам повезет.

--

-- 
WBR, Andrey Vasilishin CDIG1-UANIC, CDIG1-RIPE

Igor Sysoev | 1 Apr 15:40
Picon

Re: Transfer-Encoding: chunked

On Tue, Apr 01, 2008 at 11:22:56AM +0400, Alexey Vlasov wrote:

> А можно ли nginx'у запретить отдавать контент chunk'ми?

Нет, а зачем ?

--

-- 
Игорь Сысоев
http://sysoev.ru

Sergey Y. | 1 Apr 16:12
Picon

Re: Re[2]: Тюнинг по нагрузку и странные ребуты

до 7.0 апдейт надо, помогло

24.03.08, jackal <me <at> jackal.in> написал(а):
> Монашёв Михаил пишет:
> 6.2 работает

+1 работает замечательно ipmitool на 6.2

--
С уважением,
Евгений                            mailto:me <at> jackal.in



Alexey Vlasov | 1 Apr 18:52
Picon
Favicon

Re: Transfer-Encoding: chunked

On Tue, Apr 01, 2008 at 05:40:43PM +0400, Igor Sysoev wrote:
> On Tue, Apr 01, 2008 at 11:22:56AM +0400, Alexey Vlasov wrote:
> 
> > А можно ли nginx'у запретить отдавать контент chunk'ми?
> 
> Нет, а зачем ?

Имеем скрипт:
# cat header.php
<?php

header ('HTTP/1.1 200 OK');
phpinfo();

?>

# telnet test-domain.ru 9099
Trying 111.222.111.222...
Connected to test-domain.ru.
Escape character is '^]'.
GET /header.php HTTP/1.1
HOST:test-domain.ru

HTTP/1.1 200 OK
Server: nginx/0.6.25
Date: Tue, 01 Apr 2008 16:22:13 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/5.2.5
Transfer-Encoding: chunked

f40
2007
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
<html><head>
<style type="text/css"> 
[skip]
<tr><td class="e">PHP API </td><td class="v">20041225 </td></tr>
<tr><td cl
1000
ass="e">PHP Extension </td><td class="v">20060613 </td></tr>
<tr><td class="e">Zend Extension </td><td class="v">220060519 </td></tr>
<tr><td class="e">Debug Build </td><td class="v">no </td></tr>
[skip]
<tr><td class="e">doc_root</td><td class="v"><i>no value</i></td><td
class="v"><i>no valu
cf
e</i></td></tr>
[skip]
...
[skip]
</div></body></html>
0

0

Connection closed by foreign host.

В итоге получается, что Apache, не смотря на то, что nginx
делает ему
запрос по 1.0, всегда отвечает nginx'у:

HTTP/1.1 200 OK
Transfer-Encoding: chunked
[skip]
...
2007
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtml1-transitional.dtd">
...
[skip]
</div></body></html>
0

nginx, наверно, как и положено, еще раз добавляет chunk'и (f40)
и на выходе получается мусор
в виде посторонних символов в начале и в конце
страницы, а если в PHP
еще и GZip используют, то на выходе вообще получаем
нечитаемый мусор.

Конечно, можно в скрипте поправить 
header ('HTTP/1.1 200 OK');
на 
header ('HTTP/1.0 200 OK');
но существует большое количество скриптов/CMS, где
пишут "HTTP/1.1 200
OK".

Предполагаю, что есть какое-то иное решение, в
поисках которого я сейчас
и нахожусь.

--

-- 
Alexey Vlasov

Nix | 1 Apr 21:15

резет соединения

Можно ли как то делать принудительный резет
соединения? Так что бы
даже ответ не отсылать и не тратить ресурсы на
обработку запросов
ботов. Пока просто стоит return 403

Gmane