<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Nginx Forum - Nginx Mailing List - Russian</title>
<description>Форум, связанный с русским списком рассылки.</description><link>http://forum.nginx.org/list.php?21</link><lastBuildDate>Mon, 20 May 2013 02:29:45 -0400</lastBuildDate>
<generator>Phorum 5.2.16</generator>
<item>
<guid>http://forum.nginx.org/read.php?21,239332,239332#msg-239332</guid>
<title>400 Bad Request в Mercurial</title><link>http://forum.nginx.org/read.php?21,239332,239332#msg-239332</link><description><![CDATA[Имеется репозиторий на меркуриале, работает через Apache на внутреннем сервере, nginx стоит на шлюзе и проксирует запросы на внутренний сервер. С определённого момента стало невозможным через nginx сделать pull, хотя clone работает. При попытке сделать pull получаем 400:bad request.<br /><br />В error.log ничего, вот конфиг:<br /><br />server {<br />listen 80;<br />server_name hg.somesite.ru;<br />large_client_header_buffers 4 128k;<br />location / {<br />proxy_pass http://al-dabaran;<br />proxy_redirect off;<br />proxy_set_header Host $host;<br />proxy_set_header X-Host $http_host;<br />proxy_set_header X-Real-IP $remote_addr;<br />proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;<br />proxy_set_header Proxy-host $proxy_host;<br />client_max_body_size 400m;<br />client_body_buffer_size 128k;<br />proxy_buffering off;<br />proxy_connect_timeout 3600;<br />proxy_send_timeout 3600;<br />proxy_read_timeout 3600;<br />proxy_buffer_size 8k;<br />proxy_buffers 8 32k;<br />proxy_busy_buffers_size 64k;<br />proxy_temp_file_write_size 64k;<br />}<br /><br />}<br /><br />Если пытаться сделать pull не через nginx а напрямую всё работает. Пробовал так же прокинуть порт на шлюзе, тоже работает. Не работает только через nginx. nginx версии 1.2.8 родной из openbsd.<br />Может есть хотя бы какой-нибудь способ протрассировать почему не пашет?<br />Все эти опции в конфиге я уже добавлял по факту того что без них перестало работать, и с ними тоже не работает. Первое что увидел в гугле - large_client_header_buffers, менял в разных вариациях - ничего не помогло. Вот и понеслось..<br />Заранее спасибо за ответы]]></description>
<dc:creator>kasak</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Mon, 20 May 2013 00:31:10 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239301,239320#msg-239320</guid>
<title>Re: [SPAM]Как отдавать для deny IP; вместо 403 - 503?</title><link>http://forum.nginx.org/read.php?21,239301,239320#msg-239320</link><description><![CDATA[On 17.05.2013, at 20:10, Vladislav Prodan &lt;universite@ukr.net&gt; wrote:<br /><br />&gt;<br />&gt; Сабж.<br />&gt;<br />&gt; Список IP глобальный, определен выше секций server.<br />как временная мера - список и пр части конфига можно заинклудить в любом месте<br /><br />&gt;<br />&gt; Поэтому такая схема не помогает:<br />&gt;<br />&gt; error_page 403 = @403;<br />&gt;<br />&gt; location @403 {<br />&gt; keepalive_timeout 0;<br />&gt; return 503;<br />&gt; }<br />&gt;<br />&gt; --<br />&gt; Vladislav V. Prodan<br />&gt; System &amp; Network Administrator<br />&gt; http://support.od.ua<br />&gt; +380 67 4584408, +380 99 4060508<br />&gt; VVP88-RIPE<br />&gt;<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>kav</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Sun, 19 May 2013 03:38:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239313,239313#msg-239313</guid>
<title>Уведомление модуля о том, что сессия завершилась</title><link>http://forum.nginx.org/read.php?21,239313,239313#msg-239313</link><description><![CDATA[Всем доброго дня.<br /><br />Пишу модуль под nginx.<br /><br />Управление передается модулю, когда прилетает request и наступает соответсвующая фаза обработки. Но, что если запрос не прилетел, а сессия закрылась по тайм-ауту со стороны nginx либо от клиента явно прилетел FIN или RST? Как при наступлении такого события можно передать упраление в модуль?<br /><br />Заранее спасибо.]]></description>
<dc:creator>megalodon</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Sat, 18 May 2013 05:17:00 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239301,239301#msg-239301</guid>
<title>Как отдавать для deny IP; вместо 403 - 503?</title><link>http://forum.nginx.org/read.php?21,239301,239301#msg-239301</link><description><![CDATA[Сабж.<br /><br />Список IP глобальный, определен выше секций server.<br /><br />Поэтому такая схема не помогает:<br /><br />error_page 403 = @403;<br /><br />location @403 {<br />keepalive_timeout 0;<br />return 503;<br />}<br /><br />--<br />Vladislav V. Prodan<br />System &amp; Network Administrator<br />http://support.od.ua<br />+380 67 4584408, +380 99 4060508<br />VVP88-RIPE<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Vladislav Prodan</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Fri, 17 May 2013 12:12:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239289,239290#msg-239290</guid>
<title>Re: Amazon ELB = Nginx ?</title><link>http://forum.nginx.org/read.php?21,239289,239290#msg-239290</link><description><![CDATA[On May 17, 2013, at 14:35 , ast &lt;nginx-forum@nginx.us&gt; wrote:<br /><br />&gt; Всем привет. Из чистого любопытства:)<br />&gt;<br />&gt; http://www.e-xecutive.ru/startup/story/1823978/<br />&gt;<br />&gt; Есть такое интервью. В нем есть вот эта фраза:<br />&gt;<br />&gt; &quot;На третье направление сейчас делаем основную ставку ― это коммерческий<br />&gt; продукт на базе Nginx, над которым мы два года работаем. Фактически это тот<br />&gt; же Nginx с открытым кодом плюс компоненты с закрытым кодом. Продукт уже<br />&gt; доступен в облаке Amazon&quot;<br />&gt;<br />&gt; Была не очень подтвержденная инфа, что амазоновский ELB использует<br />&gt; модифицированный Nginx. Насколько я понимаю, то теперь это подтверждается<br />&gt; точно?<br /><br />Нет, ELB тут ни при чём.<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Andrei Belov</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Fri, 17 May 2013 06:52:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239289,239289#msg-239289</guid>
<title>Amazon ELB = Nginx ?</title><link>http://forum.nginx.org/read.php?21,239289,239289#msg-239289</link><description><![CDATA[Всем привет. Из чистого любопытства:)<br /><br />http://www.e-xecutive.ru/startup/story/1823978/<br /><br />Есть такое интервью. В нем есть вот эта фраза:<br /><br />&quot;На третье направление сейчас делаем основную ставку ― это коммерческий продукт на базе Nginx, над которым мы два года работаем. Фактически это тот же Nginx с открытым кодом плюс компоненты с закрытым кодом. Продукт уже доступен в облаке Amazon&quot;<br /><br />Была не очень подтвержденная инфа, что амазоновский ELB использует модифицированный Nginx. Насколько я понимаю, то теперь это подтверждается точно?]]></description>
<dc:creator>ast</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Fri, 17 May 2013 06:35:03 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239287,239287#msg-239287</guid>
<title>Re: proxy pass через переменную не работает</title><link>http://forum.nginx.org/read.php?21,239287,239287#msg-239287</link><description><![CDATA[Здравствуйте.<br /><br />Задайте http://nginx.org/ru/docs/http/ngx_http_core_module.html#resolver в<br />конфиге.<br /><br /><br /><br />2013/5/17 bespechnost &lt;nginx-forum@nginx.us&gt;<br /><br />&gt; Пробую так:<br />&gt; location /omlet_api/ {<br />&gt; proxy_pass http://$arg_server/;<br />&gt; proxy_set_header Host $arg_server;<br />&gt; break;<br />&gt; }<br />&gt;<br />&gt; В логах:<br />&gt; ==&gt; localhost.error_log &lt;==<br />&gt; 2013/05/17 08:48:59 [error] 16907#0: *1 no resolver defined to resolve<br />&gt; ya.ru, client: 127.0.0.1, server: localhost, request: &quot;GET<br />&gt; /omlet_api/genres/?server=ya.ru HTTP/1.1&quot;, host: &quot;localhost&quot;<br />&gt;<br />&gt; Если заменить $arg_server на имя сервера, то все работает.<br />&gt;<br />&gt; Версия NGINX - 1.2.6-r1<br />&gt;<br />&gt; Posted at Nginx Forum:<br />&gt; http://forum.nginx.org/read.php?21,239286,239286#msg-239286<br />&gt;<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br /><br /><br /><br /><br />--<br />Best Regards,<br />Vadim Lazovskiy<br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Vadim Lazovskiy</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Fri, 17 May 2013 01:46:02 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239286,239286#msg-239286</guid>
<title>proxy_pass через переменную не работает</title><link>http://forum.nginx.org/read.php?21,239286,239286#msg-239286</link><description><![CDATA[Пробую так:<br />location /omlet_api/ {<br />proxy_pass http://$arg_server/;<br />proxy_set_header Host $arg_server;<br />break;<br />}<br /><br />В логах:<br />==&gt; localhost.error_log &lt;==<br />2013/05/17 08:48:59 [error] 16907#0: *1 no resolver defined to resolve ya.ru, client: 127.0.0.1, server: localhost, request: &quot;GET /omlet_api/genres/?server=ya.ru HTTP/1.1&quot;, host: &quot;localhost&quot;<br /><br />Если заменить $arg_server на имя сервера, то все работает.<br /><br />Версия NGINX - 1.2.6-r1]]></description>
<dc:creator>bespechnost</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Fri, 17 May 2013 00:55:28 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239279#msg-239279</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239279#msg-239279</link><description><![CDATA[16.05.2013 16:22, skeletor пишет:<br />&gt; Спасибо всем за помощь.<br />&gt; Проблема была на поверхности, а именно - не слушался порт 9000.<br /><br />Вы какую-то пургу несёте - если бы дело было именно в этом, вы бы<br />получали &quot;502&quot;. Вы же получали &quot;401&quot;, а это значит что Максим прав - ваш<br />запрос обрабатывался в каком-то другом локейшене. Включите уж debug log<br />да и посмотрите.<br /><br />То, что у вас всё теперь заработало - говорит не о том, что вы<br />разобрались и искоренили проблему, а, скорее, о случайности - какое-то<br />другое ваше изменение, в той части конфига что вы не показали, привело к<br />тому что обработка запроса стала попадать в этот локейшн.<br /><br />Следующее ваше изменение конфига - запросто может развалить всё вновь,<br />готовьтесь.<br /><br /><br /><br />--<br />Best regards,<br />Andrey Kopeyko &lt;andrey@kopeyko.ru&gt;<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Andrey Kopeyko</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 13:16:06 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239271,239271#msg-239271</guid>
<title>Re: location и proxy pass</title><link>http://forum.nginx.org/read.php?21,239271,239271#msg-239271</link><description><![CDATA[Hello!<br /><br />On Thu, May 16, 2013 at 07:12:57AM -0400, AMax wrote:<br /><br />&gt; Есть такой server:<br />&gt;<br />&gt; server {<br />&gt; listen 80;<br />&gt; server_name example.com www.example.com;<br />&gt;<br />&gt; access_log /var/log/nginx/example.com/access.log main;<br />&gt; error_log /var/log/nginx/example.com/error.log;<br />&gt; include /etc/nginx/cloudflare_params;<br />&gt;<br />&gt; location /w/images/ {<br />&gt; root /var/www/data/example.com;<br />&gt; # log only hotlinking<br />&gt; if ($http_referer ~* &quot;^http://(www\.)?example\.com/.*$&quot; ) {<br />&gt; access_log off;<br />&gt; }<br />&gt; }<br />&gt;<br />&gt; location /w/skins/ {<br />&gt; root /var/www/data/example.com;<br />&gt; access_log off;<br />&gt; }<br />&gt;<br />&gt; location ~ ^/w/extensions/.*?\.(sql|php)$ { return 403; }<br />&gt;<br />&gt; # location ^~ /w/load.php {<br />&gt; # proxy_pass http://127.0.0.1:81/;<br />&gt; # include /etc/nginx/proxy_params;<br />&gt; # access_log off;<br />&gt; # }<br />&gt;<br />&gt; location / {<br />&gt; proxy_pass http://127.0.0.1:81/;<br />&gt; include /etc/nginx/proxy_params;<br />&gt; }<br />&gt; }<br />&gt;<br />&gt; Если раскомментировать location ^~ /w/load.php, он перестает работать,<br />&gt; точнее возвращает некорректный ответ от сервера, хотя, вроде бы, должен<br />&gt; обрабатываться тем же backend с теми же параметрами, только не писать в<br />&gt; журнал.<br /><br />Поскольку используется proxy_pass с URI - указанный URI заменяет<br />совпавшую с location'ом часть URI запроса. Для location / -<br />замена &quot;/&quot; на &quot;/&quot; ни на что не влияет, а вот для location<br />/w/load.php - замена &quot;/w/load.php&quot; на &quot;/&quot; логично приводит к тому,<br />что оно перестаёт работать.<br /><br />Проще всего убрать &quot;/&quot; в конце proxy_pass:<br /><br />location = /w/load.php {<br />proxy_pass http://127.0.0.1:81;<br />...<br />}<br /><br />Подробнее см. http://nginx.org/r/proxy_pass/ru.<br /><br />--<br />Maxim Dounin<br />http://nginx.org/en/donation.html<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Maxim Dounin</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 09:12:02 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239269#msg-239269</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239269#msg-239269</link><description><![CDATA[Спасибо всем за помощь.<br />Проблема была на поверхности, а именно - не слушался порт 9000. То есть банально php-fpm не работал. Вот, правильный (работает и тот, но этот точнее будет; как видно отличие только в = и ~)<br /><br />location = /rpc.php {<br />auth_basic off;<br />fastcgi_pass 127.0.0.1:9000;<br />fastcgi_param DOCUMENT_ROOT /www;<br />fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;<br />fastcgi_param PATH_TRANSLATED /www$fastcgi_script_name;<br />fastcgi_param SCRIPT_NAME $fastcgi_script_name;<br />fastcgi_param QUERY_STRING $query_string;<br />fastcgi_param CONTENT_TYPE $content_type;<br />fastcgi_param CONTENT_LENGTH $content_length;<br />fastcgi_param SERVER_ADDR $server_addr;<br />fastcgi_param SERVER_PORT $server_port;<br />fastcgi_param SERVER_PROTOCOL $server_protocol;<br />fastcgi_param GATEWAY_INTERFACE &quot;CGI/1.1&quot;;<br />fastcgi_param SERVER_NAME $server_name;<br />fastcgi_param REQUEST_URI $request_uri;<br />fastcgi_param REQUEST_METHOD $request_method;<br />fastcgi_param REMOTE_USER $remote_user;<br />fastcgi_param REMOTE_ADDR $remote_addr;<br />fastcgi_param REMOTE_PORT $remote_port;<br />fastcgi_param GEOIP_COUNTRY_CODE $geoip_city_country_code;<br />fastcgi_param GEOIP_COUNTRY_NAME $geoip_city_country_name;<br />fastcgi_param GEOIP_REGION $geoip_region;<br />fastcgi_param GEOIP_CITY $geoip_city;<br />}]]></description>
<dc:creator>skeletor</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 08:22:58 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239266#msg-239266</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239266#msg-239266</link><description><![CDATA[Проверяю curl'ом.<br />Для теста поместил в файл rpc.php текст &lt;?php phpinfo() ?&gt;.]]></description>
<dc:creator>skeletor</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 07:45:36 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239262#msg-239262</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239262#msg-239262</link><description><![CDATA[Здравствуйте, skeletor.<br /><br />Вы писали 16 мая 2013 г., 13:35:10:<br /><br />&gt; Всем привет.<br />&gt; Нужно отключить basic авторизацию для запроса<br />&gt; http://domain.com/rpc.php?jkfgsdkfg. Для всего сайта включена basic<br />&gt; авторизация. Создаю новый location :<br /><br />Наверняка подсасывается чот-то, не лежащее в /rpc.php (картинки, css<br />etc)<br /><br />Посмотрите тем же Хромом (Инструменты разработчка - Network), что на<br />самом деле запрашивается.<br /><br />Сам вчера наступил на такое.<br />--<br />С уважением,<br />Dmitry mailto:nginx-ru@sadok.spb.ru<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Dmitry Ivanov</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 07:14:02 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239260,239260#msg-239260</guid>
<title>location и proxy_pass</title><link>http://forum.nginx.org/read.php?21,239260,239260#msg-239260</link><description><![CDATA[Есть такой server:<br /><br />server {<br />listen 80;<br />server_name example.com www.example.com;<br /><br />access_log /var/log/nginx/example.com/access.log main;<br />error_log /var/log/nginx/example.com/error.log;<br />include /etc/nginx/cloudflare_params;<br /><br />location /w/images/ {<br />root /var/www/data/example.com;<br /># log only hotlinking<br />if ($http_referer ~* &quot;^http://(www\.)?example\.com/.*$&quot; ) {<br />access_log off;<br />}<br />}<br /><br />location /w/skins/ {<br />root /var/www/data/example.com;<br />access_log off;<br />}<br /><br />location ~ ^/w/extensions/.*?\.(sql|php)$ { return 403; }<br /><br /># location ^~ /w/load.php {<br /># proxy_pass http://127.0.0.1:81/;<br /># include /etc/nginx/proxy_params;<br /># access_log off;<br /># }<br /><br />location / {<br />proxy_pass http://127.0.0.1:81/;<br />include /etc/nginx/proxy_params;<br />}<br />}<br /><br />Если раскомментировать location ^~ /w/load.php, он перестает работать, точнее возвращает некорректный ответ от сервера, хотя, вроде бы, должен обрабатываться тем же backend с теми же параметрами, только не писать в журнал.]]></description>
<dc:creator>AMax</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 07:12:57 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239259#msg-239259</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239259#msg-239259</link><description><![CDATA[Hello!<br /><br />On Thu, May 16, 2013 at 06:19:33AM -0400, skeletor wrote:<br /><br />&gt; Спасибо за наводку, но вижу только обработку server_name (там у меня<br />&gt; regexp).<br /><br />Видимо, nginx собран без debug'а. Подробнее тут:<br /><br />http://nginx.org/ru/docs/debugging_log.html<br /><br />&gt; Nginx собран без модуля echo, а без него протестировать location'ы<br />&gt; невозможно.<br /><br />Способов масса, начиная от &quot;return 418;&quot; (или более гуманного<br />return 200 OK;&quot;) в проверяемом месте. Хотя проще всего - с debug<br />log'ом, как Андрей уже порекомендовал.<br /><br />Впрочем, заявленное &quot;не работает location = /rpc.php&quot; говорит о<br />том, что выбор location'а - не при чём, и проблема в чём-то<br />другом. E.g., если вы тестируете браузером, - авторизация может<br />запрышиваться не для самой страницы, а для дополнительных ресурсов -<br />картинок и т.п. - которые грузятся с других адресов.<br /><br />--<br />Maxim Dounin<br />http://nginx.org/en/donation.html<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Maxim Dounin</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 07:12:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239258#msg-239258</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239258#msg-239258</link><description><![CDATA[Спасибо за наводку, но вижу только обработку server_name (там у меня regexp). Nginx собран без модуля echo, а без него протестировать location'ы невозможно.]]></description>
<dc:creator>skeletor</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 06:19:33 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239257#msg-239257</guid>
<title>Re: nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239257#msg-239257</link><description><![CDATA[16.05.2013 13:35, skeletor пишет:<br />&gt; Всем привет.<br /><br />Добрый день!<br /><br />&gt; Нужно отключить basic авторизацию для запроса<br />...<br />&gt; Не могу понять, почему запрашивается basic авторизация при запросе<br />&gt; http://domain.com/rpc.php и как её отключить.<br /><br />А вы включите debug log и почитайте как же на самом деле ваш запрос<br />обрабатывается.<br /><br /><br />--<br />Best regards,<br />Andrey Kopeyko &lt;andrey@kopeyko.ru&gt;<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Andrey Kopeyko</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 05:54:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239256,239256#msg-239256</guid>
<title>nginx location single php file</title><link>http://forum.nginx.org/read.php?21,239256,239256#msg-239256</link><description><![CDATA[Всем привет.<br />Нужно отключить basic авторизацию для запроса http://domain.com/rpc.php?jkfgsdkfg. Для всего сайта включена basic авторизация. Создаю новый location :<br /><br />location ~ /rpc.php {<br />auth_basic off;<br />fastcgi_pass 127.0.0.1:9000;<br />fastcgi_param DOCUMENT_ROOT /www;<br />fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;<br />fastcgi_param PATH_TRANSLATED /www$fastcgi_script_name;<br />fastcgi_param SCRIPT_NAME $fastcgi_script_name;<br />fastcgi_param QUERY_STRING $query_string;<br />fastcgi_param CONTENT_TYPE $content_type;<br />fastcgi_param CONTENT_LENGTH $content_length;<br />fastcgi_param SERVER_ADDR $server_addr;<br />fastcgi_param SERVER_PORT $server_port;<br />fastcgi_param SERVER_PROTOCOL $server_protocol;<br />fastcgi_param GATEWAY_INTERFACE &quot;CGI/1.1&quot;;<br />fastcgi_param SERVER_NAME $server_name;<br />fastcgi_param REQUEST_URI $request_uri;<br />fastcgi_param REQUEST_METHOD $request_method;<br />fastcgi_param REMOTE_USER $remote_user;<br />fastcgi_param REMOTE_ADDR $remote_addr;<br />fastcgi_param REMOTE_PORT $remote_port;<br />fastcgi_param GEOIP_COUNTRY_CODE $geoip_city_country_code;<br />fastcgi_param GEOIP_COUNTRY_NAME $geoip_city_country_name;<br />fastcgi_param GEOIP_REGION $geoip_region;<br />fastcgi_param GEOIP_CITY $geoip_city;<br />}<br /><br />Но не работает (то есть, всё равно требуется авторизация). Хотя вот такие location'ы вполне работают (то есть, при запросе http://domain.com/ajax/jfsgf.php?fhfsl - basic авторизация не запрашивается):<br /><br />location /ajax {<br />auth_basic off;<br />alias /www/ajax;<br />}<br />location ~ /ajax/(.*\.php)$ {<br />auth_basic off;<br />fastcgi_pass 127.0.0.1:9000;<br />fastcgi_param DOCUMENT_ROOT /www;<br />fastcgi_param SCRIPT_FILENAME /www$fastcgi_script_name;<br />fastcgi_param PATH_TRANSLATED /www$fastcgi_script_name;<br />fastcgi_param SCRIPT_NAME $fastcgi_script_name;<br />fastcgi_param QUERY_STRING $query_string;<br />fastcgi_param CONTENT_TYPE $content_type;<br />fastcgi_param CONTENT_LENGTH $content_length;<br />fastcgi_param SERVER_ADDR $server_addr;<br />fastcgi_param SERVER_PORT $server_port;<br />fastcgi_param SERVER_PROTOCOL $server_protocol;<br />fastcgi_param GATEWAY_INTERFACE &quot;CGI/1.1&quot;;<br />fastcgi_param SERVER_NAME $server_name;<br />fastcgi_param REQUEST_URI $request_uri;<br />fastcgi_param REQUEST_METHOD $request_method;<br />fastcgi_param REMOTE_USER $remote_user;<br />fastcgi_param REMOTE_ADDR $remote_addr;<br />fastcgi_param REMOTE_PORT $remote_port;<br />fastcgi_param GEOIP_COUNTRY_CODE $geoip_city_country_code;<br />fastcgi_param GEOIP_COUNTRY_NAME $geoip_city_country_name;<br />fastcgi_param GEOIP_REGION $geoip_region;<br />fastcgi_param GEOIP_CITY $geoip_city;<br />}<br /><br />Не могу понять, почему запрашивается basic авторизация при запросе http://domain.com/rpc.php и как её отключить.<br />Уже по разному пробовал location менять:<br /><br />location = /rpc.php<br />location /rpc.php<br /><br />не работает.]]></description>
<dc:creator>skeletor</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Thu, 16 May 2013 05:35:10 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239218,239229#msg-239229</guid>
<title>Re: Доступ по ip ИЛИ через клиентский сертификат - возможно ли?</title><link>http://forum.nginx.org/read.php?21,239218,239229#msg-239229</link><description><![CDATA[если требовать сертификат, то в случае, если сертификат не предъявлен,<br />nginx генерирует внутреннюю ошибку 495.<br /><br />делаете &quot;error_page 495 = @fallback;&quot;, все, кто пришел без<br />сертификата, отправляются в @fallback, там пробиваете по IP.<br /><br />как-то так.<br /><br />15 мая 2013 г., 15:46 пользователь itonohito &lt;nginx-forum@nginx.us&gt; написал:<br />&gt; Добрый день!<br />&gt;<br />&gt; Уважаемые гуру, подскажите, возможно ли средствами nginx сделать доступ к<br />&gt; сайту с определенных ip ИЛИ через клиентские сертификаты с любого ip?<br />&gt; Т.е. чтобы клиент с установленным клиентским сертификатом получал доступ с<br />&gt; любого ip, а кроме того - с некоторых ip доступ был для всех и без<br />&gt; сертификата тоже.<br />&gt;<br />&gt; Posted at Nginx Forum: http://forum.nginx.org/read.php?21,239218,239218#msg-239218<br />&gt;<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Илья Шипицин</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Wed, 15 May 2013 08:54:03 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239218,239222#msg-239222</guid>
<title>Re: Доступ по ip ИЛИ через клиентский сертификат - возможно ли?</title><link>http://forum.nginx.org/read.php?21,239218,239222#msg-239222</link><description><![CDATA[Здравствуйте, itonohito.<br /><br />Вы писали 15 мая 2013 г., 16:46:22:<br /><br />&gt; Добрый день!<br /><br />&gt; Уважаемые гуру, подскажите, возможно ли средствами nginx сделать доступ к<br />&gt; сайту с определенных ip ИЛИ через клиентские сертификаты с любого ip?<br />&gt; Т.е. чтобы клиент с установленным клиентским сертификатом получал доступ с<br />&gt; любого ip, а кроме того - с некоторых ip доступ был для всех и без<br />&gt; сертификата тоже.<br /><br />Здравствуйте.<br /><br />Вы можете сконфигурировать отдельный server {} на отдельном порту, разрешающий доступ по IP без<br />требования сертификата, и завернуть трафик с &quot;некоторых IP&quot; на этот порт, например через<br />iptables -t nat -I PREROUTING -s 1.2.3.4/25 -d 8.8.7.7 -p tcp --dport 443 -j DNAT --to-destination=8.8.7.7:444<br /><br /><br /><br />--<br />С уважением,<br />Pavel mailto:pavel2000@ngs.ru<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Pavel V.</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Wed, 15 May 2013 07:00:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239218,239218#msg-239218</guid>
<title>Доступ по ip ИЛИ через клиентский сертификат - возможно ли?</title><link>http://forum.nginx.org/read.php?21,239218,239218#msg-239218</link><description><![CDATA[Добрый день!<br /><br />Уважаемые гуру, подскажите, возможно ли средствами nginx сделать доступ к сайту с определенных ip ИЛИ через клиентские сертификаты с любого ip?<br />Т.е. чтобы клиент с установленным клиентским сертификатом получал доступ с любого ip, а кроме того - с некоторых ip доступ был для всех и без сертификата тоже.]]></description>
<dc:creator>itonohito</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Wed, 15 May 2013 05:46:22 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239110,239209#msg-239209</guid>
<title>Re: Крякозябы в кешированных файлах proxy store</title><link>http://forum.nginx.org/read.php?21,239110,239209#msg-239209</link><description><![CDATA[Решил проблему, был включен gzip, но хз почему такой косяк был]]></description>
<dc:creator>r3l0c</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Wed, 15 May 2013 01:55:26 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239190#msg-239190</guid>
<title>Re: Re[2]: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239190#msg-239190</link><description><![CDATA[Михаил Монашёв Wrote:<br />-------------------------------------------------------<br />&gt; Здравствуйте, Илья.<br />&gt;<br />&gt; &gt; у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />&gt; &gt; хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />&gt; &gt; мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br />&gt;<br />&gt; Это не нужная экономия. Актуально может было бы ещё тем, кто браузером<br />&gt; ходит через узкий канал, но уж точно не тем, кто раздаёт контент.<br /><br />Узкий канал =&gt; Transfer-Encoding: chunked =&gt; отсутствует Content-Length =&gt;<br />=&gt; Какая разница, есть заголовок Connection или нет?<br />Клиент все равно не знает,<br />когда закончится ответ сервера, пока сервер не закончит.<br /><br />В случае с Keep-Alive это не сломается, потому что Google не отдает Keep-Alive,<br />и вроде бы забаненных в Гугле мы не наблюдаем....<br /><br />В случае с Close тоже не сломается, потому что клиент все равно<br />не знает, когда закрыть соединение - т.е. решает сервер.]]></description>
<dc:creator>Blangel</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 12:44:18 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239189#msg-239189</guid>
<title>Re: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239189#msg-239189</link><description><![CDATA[Hello!<br /><br />On Tue, May 14, 2013 at 10:24:31PM +0600, Илья Шипицин wrote:<br /><br />&gt; не слать &quot;Connection: Keep-Alive&quot; для HTTP/1.1 - статистически то же<br />&gt; самое, что я предлагал (ввиду малораспространенности<br />&gt; не-кипэлайв-соединений)<br />&gt;<br />&gt; давайте так и сделаем ?<br /><br />Я очень не хочу это трогать, по крайней мере - без тщательного<br />тестирования.<br /><br />&gt; вариант &quot;не слать Connection никогда&quot; мы на кошках проверим, потом расскажу.<br /><br />В рассылках периодически жалуются даже на те очень нечастые<br />ситуцаии, когда nginx так всё-таки делает (e.g., при<br />переконфигурации).<br /><br />&gt;<br />&gt; 14 мая 2013 г., 22:17 пользователь Maxim Dounin &lt;mdounin@mdounin.ru&gt; написал:<br />&gt; &gt; Hello!<br />&gt; &gt;<br />&gt; &gt; On Tue, May 14, 2013 at 09:39:42PM +0600, Илья Шипицин wrote:<br />&gt; &gt;<br />&gt; &gt;&gt; 14 мая 2013 г., 21:16 пользователь Maxim Dounin &lt;mdounin@mdounin.ru&gt; написал:<br />&gt; &gt;&gt; &gt; Hello!<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt; On Tue, May 14, 2013 at 06:15:05PM +0600, Илья Шипицин wrote:<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt; [...]<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt;&gt; во всех случаях, когда добавлялся Keep-Alive: timeout, добавлялся<br />&gt; &gt;&gt; &gt;&gt; также и Connection. не вижу ничего некорректного. можете уточнить ?<br />&gt; &gt;&gt; &gt;&gt;<br />&gt; &gt;&gt; &gt;&gt; другое дело, что я накосячил и не добавлял Keep-Alive: timeout там,<br />&gt; &gt;&gt; &gt;&gt; где предполагалось. да, признаю ошибку. вложил новый патч.<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt; Это я не досмотрел патч, и предположил не ту ошибку из двух<br />&gt; &gt;&gt; &gt; возможных.<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt; [...]<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt;&gt; --- src/http/ngx_http_header_filter_module.c.orig Tue May 14 12:17:59 2013<br />&gt; &gt;&gt; &gt;&gt; +++ src/http/ngx_http_header_filter_module.c Tue May 14 16:04:29 2013<br />&gt; &gt;&gt; &gt;&gt; @@ -382,7 +382,7 @@<br />&gt; &gt;&gt; &gt;&gt; if (r-&gt;headers_out.status == NGX_HTTP_SWITCHING_PROTOCOLS) {<br />&gt; &gt;&gt; &gt;&gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt; &gt;&gt; &gt;&gt;<br />&gt; &gt;&gt; &gt;&gt; - } else if (r-&gt;keepalive) {<br />&gt; &gt;&gt; &gt;&gt; + } else if ((r-&gt;keepalive) &amp;&amp; ((r-&gt;http_version == NGX_HTTP_VERSION_10) || (clcf-&gt;keepalive_header)) ) {<br />&gt; &gt;&gt; &gt;&gt; len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt; &gt;&gt; &gt;&gt;<br />&gt; &gt;&gt; &gt;&gt; /*<br />&gt; &gt;&gt; &gt;&gt; @@ -397,9 +397,7 @@<br />&gt; &gt;&gt; &gt;&gt; len += sizeof(&quot;Keep-Alive: timeout=&quot;) - 1 + NGX_TIME_T_LEN + 2;<br />&gt; &gt;&gt; &gt;&gt; }<br />&gt; &gt;&gt; &gt;&gt;<br />&gt; &gt;&gt; &gt;&gt; - } else {<br />&gt; &gt;&gt; &gt;&gt; - len += sizeof(&quot;Connection: close&quot; CRLF) - 1;<br />&gt; &gt;&gt; &gt;&gt; - }<br />&gt; &gt;&gt; &gt;&gt; + }<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt; &gt; &quot;Connection: close&quot; при выключенном keepalive'е нужно указывать,<br />&gt; &gt;&gt; &gt; не возвращать соответствующий заголовок - чревато ненужными<br />&gt; &gt;&gt; &gt; проблемами и безуспешными попытками клиентов послать в то же<br />&gt; &gt;&gt; &gt; соединение следующий запрос.<br />&gt; &gt;&gt; &gt;<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; я понимаю ваши опасения, однако с точки зрения буквы закона, rfc 2616<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; 8.1.4 Practical Considerations<br />&gt; &gt;&gt;<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; ........<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; A client, server, or proxy MAY close the transport connection at any<br />&gt; &gt;&gt; time.<br />&gt; &gt;&gt; .........<br />&gt; &gt;&gt;<br />&gt; &gt;&gt;<br />&gt; &gt;&gt;<br />&gt; &gt;<br />&gt; &gt; Это _можно_ делать, но на практике - это приводит к сильно<br />&gt; &gt; неоптимальному поведению клиентов. Поэтому убирать &quot;Connection:<br />&gt; &gt; close&quot; из ответов, keepalive в которых не предполагается - это<br />&gt; &gt; плохая идея.<br />&gt; &gt;<br />&gt; &gt; С учётом того, что keepalive в нормальных условиях влючён чуть<br />&gt; &gt; более, чем всегда - убирать &quot;Connection: close&quot; не представляется<br />&gt; &gt; разумным ни с какой точки зрения.<br />&gt; &gt;<br />&gt; &gt;&gt; с точки зрения духа закона так поступает IIS (по данным Netcraft-а 16%<br />&gt; &gt;&gt; сайтов), как-то же это работает ...<br />&gt; &gt;<br />&gt; &gt; Специально сходил проверил на первый попавшийся сайт с IIS'ом -<br />&gt; &gt; _так_ IIS, насколько я вижу, не поступает:<br />&gt; &gt;<br />&gt; &gt; $ telnet W3schools.com 80<br />&gt; &gt; Trying 66.29.212.73...<br />&gt; &gt; Connected to W3schools.com.<br />&gt; &gt; Escape character is '^]'.<br />&gt; &gt; HEAD / HTTP/1.1<br />&gt; &gt; Host: w3scools.com<br />&gt; &gt;<br />&gt; &gt; HTTP/1.1 200 OK<br />&gt; &gt; Cache-Control: private<br />&gt; &gt; Content-Length: 29839<br />&gt; &gt; Content-Type: text/html<br />&gt; &gt; Server: Microsoft-IIS/7.5<br />&gt; &gt; Set-Cookie: ASPSESSIONIDCABDDTCD=OMAGHFBBMDCIEKCKOIEGKPAO; path=/<br />&gt; &gt; X-Powered-By: ASP.NET<br />&gt; &gt; Date: Tue, 14 May 2013 16:10:08 GMT<br />&gt; &gt;<br />&gt; &gt; HEAD / HTTP/1.1<br />&gt; &gt; Host: w3scools.com<br />&gt; &gt; Connection: close<br />&gt; &gt;<br />&gt; &gt; HTTP/1.1 200 OK<br />&gt; &gt; Cache-Control: private<br />&gt; &gt; Content-Length: 29839<br />&gt; &gt; Content-Type: text/html<br />&gt; &gt; Server: Microsoft-IIS/7.5<br />&gt; &gt; Set-Cookie: ASPSESSIONIDCABDDTCD=MICGHFBBKNHMJHAFKDAJJOJD; path=/<br />&gt; &gt; X-Powered-By: ASP.NET<br />&gt; &gt; Date: Tue, 14 May 2013 16:10:28 GMT<br />&gt; &gt; Connection: close<br />&gt; &gt;<br />&gt; &gt; Connection closed by foreign host.<br />&gt; &gt;<br />&gt; &gt; Т.е. если соединение закрывается - то &quot;Connection: close&quot; в ответе<br />&gt; &gt; присутствует.<br />&gt; &gt;<br />&gt; &gt;&gt; у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />&gt; &gt;&gt; хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />&gt; &gt;&gt; мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br />&gt; &gt;&gt;<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; &gt; Вообще я бы, честно говоря, не трогал это место.<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; это абстрактные опасения или вы знаете сценарии, при которых это<br />&gt; &gt;&gt; приведет к проблемам ?<br />&gt; &gt;<br />&gt; &gt; При правильной реализации - т.е. не слать &quot;Connection: keep-alive&quot;<br />&gt; &gt; для соединений по HTTP/1.1, если заголовок Keep-Alive не отдаётся -<br />&gt; &gt; только абстрактные. Все изложенные выше замечания - вполне<br />&gt; &gt; конкретные.<br />&gt; &gt;<br />&gt; &gt; Just in case, правильный патч какой-то такой:<br />&gt; &gt;<br />&gt; &gt; --- a/src/http/ngx_http_header_filter_module.c<br />&gt; &gt; +++ b/src/http/ngx_http_header_filter_module.c<br />&gt; &gt; @@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_<br />&gt; &gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt; &gt;<br />&gt; &gt; } else if (r-&gt;keepalive) {<br />&gt; &gt; - len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt; &gt; +<br />&gt; &gt; + if (r-&gt;http_version &lt; NGX_HTTP_VERSION_11 || clcf-&gt;keepalive_header) {<br />&gt; &gt; + len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt; &gt; + }<br />&gt; &gt;<br />&gt; &gt; /*<br />&gt; &gt; * MSIE and Opera ignore the &quot;Keep-Alive: timeout=&lt;N&gt;&quot; header.<br />&gt; &gt; @@ -556,8 +559,11 @@ ngx_http_header_filter(ngx_http_request_<br />&gt; &gt; sizeof(&quot;Connection: upgrade&quot; CRLF) - 1);<br />&gt; &gt;<br />&gt; &gt; } else if (r-&gt;keepalive) {<br />&gt; &gt; - b-&gt;last = ngx_cpymem(b-&gt;last, &quot;Connection: keep-alive&quot; CRLF,<br />&gt; &gt; - sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1);<br />&gt; &gt; +<br />&gt; &gt; + if (r-&gt;http_version &lt; NGX_HTTP_VERSION_11 || clcf-&gt;keepalive_header) {<br />&gt; &gt; + b-&gt;last = ngx_cpymem(b-&gt;last, &quot;Connection: keep-alive&quot; CRLF,<br />&gt; &gt; + sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1);<br />&gt; &gt; + }<br />&gt; &gt;<br />&gt; &gt; if (clcf-&gt;keepalive_header) {<br />&gt; &gt; b-&gt;last = ngx_sprintf(b-&gt;last, &quot;Keep-Alive: timeout=%T&quot; CRLF,<br />&gt; &gt;<br />&gt; &gt;<br />&gt; &gt; --<br />&gt; &gt; Maxim Dounin<br />&gt; &gt; http://nginx.org/en/donation.html<br />&gt; &gt;<br />&gt; &gt; _______________________________________________<br />&gt; &gt; nginx-ru mailing list<br />&gt; &gt; nginx-ru@nginx.org<br />&gt; &gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br /><br />--<br />Maxim Dounin<br />http://nginx.org/en/donation.html<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Maxim Dounin</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 12:40:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239188#msg-239188</guid>
<title>Re: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239188#msg-239188</link><description><![CDATA[не слать &quot;Connection: Keep-Alive&quot; для HTTP/1.1 - статистически то же<br />самое, что я предлагал (ввиду малораспространенности<br />не-кипэлайв-соединений)<br /><br />давайте так и сделаем ?<br /><br />вариант &quot;не слать Connection никогда&quot; мы на кошках проверим, потом расскажу.<br /><br />14 мая 2013 г., 22:17 пользователь Maxim Dounin &lt;mdounin@mdounin.ru&gt; написал:<br />&gt; Hello!<br />&gt;<br />&gt; On Tue, May 14, 2013 at 09:39:42PM +0600, Илья Шипицин wrote:<br />&gt;<br />&gt;&gt; 14 мая 2013 г., 21:16 пользователь Maxim Dounin &lt;mdounin@mdounin.ru&gt; написал:<br />&gt;&gt; &gt; Hello!<br />&gt;&gt; &gt;<br />&gt;&gt; &gt; On Tue, May 14, 2013 at 06:15:05PM +0600, Илья Шипицин wrote:<br />&gt;&gt; &gt;<br />&gt;&gt; &gt; [...]<br />&gt;&gt; &gt;<br />&gt;&gt; &gt;&gt; во всех случаях, когда добавлялся Keep-Alive: timeout, добавлялся<br />&gt;&gt; &gt;&gt; также и Connection. не вижу ничего некорректного. можете уточнить ?<br />&gt;&gt; &gt;&gt;<br />&gt;&gt; &gt;&gt; другое дело, что я накосячил и не добавлял Keep-Alive: timeout там,<br />&gt;&gt; &gt;&gt; где предполагалось. да, признаю ошибку. вложил новый патч.<br />&gt;&gt; &gt;<br />&gt;&gt; &gt; Это я не досмотрел патч, и предположил не ту ошибку из двух<br />&gt;&gt; &gt; возможных.<br />&gt;&gt; &gt;<br />&gt;&gt; &gt; [...]<br />&gt;&gt; &gt;<br />&gt;&gt; &gt;&gt; --- src/http/ngx_http_header_filter_module.c.orig Tue May 14 12:17:59 2013<br />&gt;&gt; &gt;&gt; +++ src/http/ngx_http_header_filter_module.c Tue May 14 16:04:29 2013<br />&gt;&gt; &gt;&gt; @@ -382,7 +382,7 @@<br />&gt;&gt; &gt;&gt; if (r-&gt;headers_out.status == NGX_HTTP_SWITCHING_PROTOCOLS) {<br />&gt;&gt; &gt;&gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt;&gt; &gt;&gt;<br />&gt;&gt; &gt;&gt; - } else if (r-&gt;keepalive) {<br />&gt;&gt; &gt;&gt; + } else if ((r-&gt;keepalive) &amp;&amp; ((r-&gt;http_version == NGX_HTTP_VERSION_10) || (clcf-&gt;keepalive_header)) ) {<br />&gt;&gt; &gt;&gt; len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt;&gt; &gt;&gt;<br />&gt;&gt; &gt;&gt; /*<br />&gt;&gt; &gt;&gt; @@ -397,9 +397,7 @@<br />&gt;&gt; &gt;&gt; len += sizeof(&quot;Keep-Alive: timeout=&quot;) - 1 + NGX_TIME_T_LEN + 2;<br />&gt;&gt; &gt;&gt; }<br />&gt;&gt; &gt;&gt;<br />&gt;&gt; &gt;&gt; - } else {<br />&gt;&gt; &gt;&gt; - len += sizeof(&quot;Connection: close&quot; CRLF) - 1;<br />&gt;&gt; &gt;&gt; - }<br />&gt;&gt; &gt;&gt; + }<br />&gt;&gt; &gt;<br />&gt;&gt; &gt; &quot;Connection: close&quot; при выключенном keepalive'е нужно указывать,<br />&gt;&gt; &gt; не возвращать соответствующий заголовок - чревато ненужными<br />&gt;&gt; &gt; проблемами и безуспешными попытками клиентов послать в то же<br />&gt;&gt; &gt; соединение следующий запрос.<br />&gt;&gt; &gt;<br />&gt;&gt;<br />&gt;&gt; я понимаю ваши опасения, однако с точки зрения буквы закона, rfc 2616<br />&gt;&gt;<br />&gt;&gt; 8.1.4 Practical Considerations<br />&gt;&gt;<br />&gt;&gt;<br />&gt;&gt; ........<br />&gt;&gt;<br />&gt;&gt; A client, server, or proxy MAY close the transport connection at any<br />&gt;&gt; time.<br />&gt;&gt; .........<br />&gt;&gt;<br />&gt;&gt;<br />&gt;&gt;<br />&gt;<br />&gt; Это _можно_ делать, но на практике - это приводит к сильно<br />&gt; неоптимальному поведению клиентов. Поэтому убирать &quot;Connection:<br />&gt; close&quot; из ответов, keepalive в которых не предполагается - это<br />&gt; плохая идея.<br />&gt;<br />&gt; С учётом того, что keepalive в нормальных условиях влючён чуть<br />&gt; более, чем всегда - убирать &quot;Connection: close&quot; не представляется<br />&gt; разумным ни с какой точки зрения.<br />&gt;<br />&gt;&gt; с точки зрения духа закона так поступает IIS (по данным Netcraft-а 16%<br />&gt;&gt; сайтов), как-то же это работает ...<br />&gt;<br />&gt; Специально сходил проверил на первый попавшийся сайт с IIS'ом -<br />&gt; _так_ IIS, насколько я вижу, не поступает:<br />&gt;<br />&gt; $ telnet W3schools.com 80<br />&gt; Trying 66.29.212.73...<br />&gt; Connected to W3schools.com.<br />&gt; Escape character is '^]'.<br />&gt; HEAD / HTTP/1.1<br />&gt; Host: w3scools.com<br />&gt;<br />&gt; HTTP/1.1 200 OK<br />&gt; Cache-Control: private<br />&gt; Content-Length: 29839<br />&gt; Content-Type: text/html<br />&gt; Server: Microsoft-IIS/7.5<br />&gt; Set-Cookie: ASPSESSIONIDCABDDTCD=OMAGHFBBMDCIEKCKOIEGKPAO; path=/<br />&gt; X-Powered-By: ASP.NET<br />&gt; Date: Tue, 14 May 2013 16:10:08 GMT<br />&gt;<br />&gt; HEAD / HTTP/1.1<br />&gt; Host: w3scools.com<br />&gt; Connection: close<br />&gt;<br />&gt; HTTP/1.1 200 OK<br />&gt; Cache-Control: private<br />&gt; Content-Length: 29839<br />&gt; Content-Type: text/html<br />&gt; Server: Microsoft-IIS/7.5<br />&gt; Set-Cookie: ASPSESSIONIDCABDDTCD=MICGHFBBKNHMJHAFKDAJJOJD; path=/<br />&gt; X-Powered-By: ASP.NET<br />&gt; Date: Tue, 14 May 2013 16:10:28 GMT<br />&gt; Connection: close<br />&gt;<br />&gt; Connection closed by foreign host.<br />&gt;<br />&gt; Т.е. если соединение закрывается - то &quot;Connection: close&quot; в ответе<br />&gt; присутствует.<br />&gt;<br />&gt;&gt; у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />&gt;&gt; хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />&gt;&gt; мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br />&gt;&gt;<br />&gt;&gt;<br />&gt;&gt; &gt; Вообще я бы, честно говоря, не трогал это место.<br />&gt;&gt;<br />&gt;&gt; это абстрактные опасения или вы знаете сценарии, при которых это<br />&gt;&gt; приведет к проблемам ?<br />&gt;<br />&gt; При правильной реализации - т.е. не слать &quot;Connection: keep-alive&quot;<br />&gt; для соединений по HTTP/1.1, если заголовок Keep-Alive не отдаётся -<br />&gt; только абстрактные. Все изложенные выше замечания - вполне<br />&gt; конкретные.<br />&gt;<br />&gt; Just in case, правильный патч какой-то такой:<br />&gt;<br />&gt; --- a/src/http/ngx_http_header_filter_module.c<br />&gt; +++ b/src/http/ngx_http_header_filter_module.c<br />&gt; @@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_<br />&gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt;<br />&gt; } else if (r-&gt;keepalive) {<br />&gt; - len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt; +<br />&gt; + if (r-&gt;http_version &lt; NGX_HTTP_VERSION_11 || clcf-&gt;keepalive_header) {<br />&gt; + len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt; + }<br />&gt;<br />&gt; /*<br />&gt; * MSIE and Opera ignore the &quot;Keep-Alive: timeout=&lt;N&gt;&quot; header.<br />&gt; @@ -556,8 +559,11 @@ ngx_http_header_filter(ngx_http_request_<br />&gt; sizeof(&quot;Connection: upgrade&quot; CRLF) - 1);<br />&gt;<br />&gt; } else if (r-&gt;keepalive) {<br />&gt; - b-&gt;last = ngx_cpymem(b-&gt;last, &quot;Connection: keep-alive&quot; CRLF,<br />&gt; - sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1);<br />&gt; +<br />&gt; + if (r-&gt;http_version &lt; NGX_HTTP_VERSION_11 || clcf-&gt;keepalive_header) {<br />&gt; + b-&gt;last = ngx_cpymem(b-&gt;last, &quot;Connection: keep-alive&quot; CRLF,<br />&gt; + sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1);<br />&gt; + }<br />&gt;<br />&gt; if (clcf-&gt;keepalive_header) {<br />&gt; b-&gt;last = ngx_sprintf(b-&gt;last, &quot;Keep-Alive: timeout=%T&quot; CRLF,<br />&gt;<br />&gt;<br />&gt; --<br />&gt; Maxim Dounin<br />&gt; http://nginx.org/en/donation.html<br />&gt;<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Илья Шипицин</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 12:26:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239187#msg-239187</guid>
<title>Re: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239187#msg-239187</link><description><![CDATA[Hello!<br /><br />On Tue, May 14, 2013 at 09:39:42PM +0600, Илья Шипицин wrote:<br /><br />&gt; 14 мая 2013 г., 21:16 пользователь Maxim Dounin &lt;mdounin@mdounin.ru&gt; написал:<br />&gt; &gt; Hello!<br />&gt; &gt;<br />&gt; &gt; On Tue, May 14, 2013 at 06:15:05PM +0600, Илья Шипицин wrote:<br />&gt; &gt;<br />&gt; &gt; [...]<br />&gt; &gt;<br />&gt; &gt;&gt; во всех случаях, когда добавлялся Keep-Alive: timeout, добавлялся<br />&gt; &gt;&gt; также и Connection. не вижу ничего некорректного. можете уточнить ?<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; другое дело, что я накосячил и не добавлял Keep-Alive: timeout там,<br />&gt; &gt;&gt; где предполагалось. да, признаю ошибку. вложил новый патч.<br />&gt; &gt;<br />&gt; &gt; Это я не досмотрел патч, и предположил не ту ошибку из двух<br />&gt; &gt; возможных.<br />&gt; &gt;<br />&gt; &gt; [...]<br />&gt; &gt;<br />&gt; &gt;&gt; --- src/http/ngx_http_header_filter_module.c.orig Tue May 14 12:17:59 2013<br />&gt; &gt;&gt; +++ src/http/ngx_http_header_filter_module.c Tue May 14 16:04:29 2013<br />&gt; &gt;&gt; @@ -382,7 +382,7 @@<br />&gt; &gt;&gt; if (r-&gt;headers_out.status == NGX_HTTP_SWITCHING_PROTOCOLS) {<br />&gt; &gt;&gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; - } else if (r-&gt;keepalive) {<br />&gt; &gt;&gt; + } else if ((r-&gt;keepalive) &amp;&amp; ((r-&gt;http_version == NGX_HTTP_VERSION_10) || (clcf-&gt;keepalive_header)) ) {<br />&gt; &gt;&gt; len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; /*<br />&gt; &gt;&gt; @@ -397,9 +397,7 @@<br />&gt; &gt;&gt; len += sizeof(&quot;Keep-Alive: timeout=&quot;) - 1 + NGX_TIME_T_LEN + 2;<br />&gt; &gt;&gt; }<br />&gt; &gt;&gt;<br />&gt; &gt;&gt; - } else {<br />&gt; &gt;&gt; - len += sizeof(&quot;Connection: close&quot; CRLF) - 1;<br />&gt; &gt;&gt; - }<br />&gt; &gt;&gt; + }<br />&gt; &gt;<br />&gt; &gt; &quot;Connection: close&quot; при выключенном keepalive'е нужно указывать,<br />&gt; &gt; не возвращать соответствующий заголовок - чревато ненужными<br />&gt; &gt; проблемами и безуспешными попытками клиентов послать в то же<br />&gt; &gt; соединение следующий запрос.<br />&gt; &gt;<br />&gt;<br />&gt; я понимаю ваши опасения, однако с точки зрения буквы закона, rfc 2616<br />&gt;<br />&gt; 8.1.4 Practical Considerations<br />&gt;<br />&gt;<br />&gt; ........<br />&gt;<br />&gt; A client, server, or proxy MAY close the transport connection at any<br />&gt; time.<br />&gt; .........<br />&gt;<br />&gt;<br />&gt;<br /><br />Это _можно_ делать, но на практике - это приводит к сильно<br />неоптимальному поведению клиентов. Поэтому убирать &quot;Connection:<br />close&quot; из ответов, keepalive в которых не предполагается - это<br />плохая идея.<br /><br />С учётом того, что keepalive в нормальных условиях влючён чуть<br />более, чем всегда - убирать &quot;Connection: close&quot; не представляется<br />разумным ни с какой точки зрения.<br /><br />&gt; с точки зрения духа закона так поступает IIS (по данным Netcraft-а 16%<br />&gt; сайтов), как-то же это работает ...<br /><br />Специально сходил проверил на первый попавшийся сайт с IIS'ом -<br />_так_ IIS, насколько я вижу, не поступает:<br /><br />$ telnet W3schools.com 80<br />Trying 66.29.212.73...<br />Connected to W3schools.com.<br />Escape character is '^]'.<br />HEAD / HTTP/1.1<br />Host: w3scools.com<br /><br />HTTP/1.1 200 OK<br />Cache-Control: private<br />Content-Length: 29839<br />Content-Type: text/html<br />Server: Microsoft-IIS/7.5<br />Set-Cookie: ASPSESSIONIDCABDDTCD=OMAGHFBBMDCIEKCKOIEGKPAO; path=/<br />X-Powered-By: ASP.NET<br />Date: Tue, 14 May 2013 16:10:08 GMT<br /><br />HEAD / HTTP/1.1<br />Host: w3scools.com<br />Connection: close<br /><br />HTTP/1.1 200 OK<br />Cache-Control: private<br />Content-Length: 29839<br />Content-Type: text/html<br />Server: Microsoft-IIS/7.5<br />Set-Cookie: ASPSESSIONIDCABDDTCD=MICGHFBBKNHMJHAFKDAJJOJD; path=/<br />X-Powered-By: ASP.NET<br />Date: Tue, 14 May 2013 16:10:28 GMT<br />Connection: close<br /><br />Connection closed by foreign host.<br /><br />Т.е. если соединение закрывается - то &quot;Connection: close&quot; в ответе<br />присутствует.<br /><br />&gt; у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />&gt; хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />&gt; мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br />&gt;<br />&gt;<br />&gt; &gt; Вообще я бы, честно говоря, не трогал это место.<br />&gt;<br />&gt; это абстрактные опасения или вы знаете сценарии, при которых это<br />&gt; приведет к проблемам ?<br /><br />При правильной реализации - т.е. не слать &quot;Connection: keep-alive&quot;<br />для соединений по HTTP/1.1, если заголовок Keep-Alive не отдаётся -<br />только абстрактные. Все изложенные выше замечания - вполне<br />конкретные.<br /><br />Just in case, правильный патч какой-то такой:<br /><br />--- a/src/http/ngx_http_header_filter_module.c<br />+++ b/src/http/ngx_http_header_filter_module.c<br />@@ -383,7 +383,10 @@ ngx_http_header_filter(ngx_http_request_<br />len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br /><br />} else if (r-&gt;keepalive) {<br />- len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />+<br />+ if (r-&gt;http_version &lt; NGX_HTTP_VERSION_11 || clcf-&gt;keepalive_header) {<br />+ len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />+ }<br /><br />/*<br />* MSIE and Opera ignore the &quot;Keep-Alive: timeout=&lt;N&gt;&quot; header.<br />@@ -556,8 +559,11 @@ ngx_http_header_filter(ngx_http_request_<br />sizeof(&quot;Connection: upgrade&quot; CRLF) - 1);<br /><br />} else if (r-&gt;keepalive) {<br />- b-&gt;last = ngx_cpymem(b-&gt;last, &quot;Connection: keep-alive&quot; CRLF,<br />- sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1);<br />+<br />+ if (r-&gt;http_version &lt; NGX_HTTP_VERSION_11 || clcf-&gt;keepalive_header) {<br />+ b-&gt;last = ngx_cpymem(b-&gt;last, &quot;Connection: keep-alive&quot; CRLF,<br />+ sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1);<br />+ }<br /><br />if (clcf-&gt;keepalive_header) {<br />b-&gt;last = ngx_sprintf(b-&gt;last, &quot;Keep-Alive: timeout=%T&quot; CRLF,<br /><br /><br />--<br />Maxim Dounin<br />http://nginx.org/en/donation.html<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Maxim Dounin</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 12:18:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239186#msg-239186</guid>
<title>Re: Re[2]: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239186#msg-239186</link><description><![CDATA[ну так, чтобы пользователю на узком канале прилетело меньше трафика,<br />надо меньше его отдать.<br /><br />14 мая 2013 г., 22:05 пользователь Михаил Монашёв<br />&lt;postmaster@softsearch.ru&gt; написал:<br />&gt; Здравствуйте, Илья.<br />&gt;<br />&gt;&gt; у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />&gt;&gt; хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />&gt;&gt; мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br />&gt;<br />&gt; Это не нужная экономия. Актуально может было бы ещё тем, кто браузером<br />&gt; ходит через узкий канал, но уж точно не тем, кто раздаёт контент.<br />&gt;<br />&gt; --<br />&gt; С уважением,<br />&gt; Михаил mailto:postmaster@softsearch.ru<br />&gt;<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Илья Шипицин</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 12:10:06 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239185#msg-239185</guid>
<title>Re[2]: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239185#msg-239185</link><description><![CDATA[Здравствуйте, Илья.<br /><br />&gt; у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />&gt; хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />&gt; мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br /><br />Это не нужная экономия. Актуально может было бы ещё тем, кто браузером<br />ходит через узкий канал, но уж точно не тем, кто раздаёт контент.<br /><br />--<br />С уважением,<br />Михаил mailto:postmaster@softsearch.ru<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Михаил Монашёв</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 12:06:02 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239184#msg-239184</guid>
<title>Re: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239184#msg-239184</link><description><![CDATA[14 мая 2013 г., 21:16 пользователь Maxim Dounin &lt;mdounin@mdounin.ru&gt; написал:<br />&gt; Hello!<br />&gt;<br />&gt; On Tue, May 14, 2013 at 06:15:05PM +0600, Илья Шипицин wrote:<br />&gt;<br />&gt; [...]<br />&gt;<br />&gt;&gt; во всех случаях, когда добавлялся Keep-Alive: timeout, добавлялся<br />&gt;&gt; также и Connection. не вижу ничего некорректного. можете уточнить ?<br />&gt;&gt;<br />&gt;&gt; другое дело, что я накосячил и не добавлял Keep-Alive: timeout там,<br />&gt;&gt; где предполагалось. да, признаю ошибку. вложил новый патч.<br />&gt;<br />&gt; Это я не досмотрел патч, и предположил не ту ошибку из двух<br />&gt; возможных.<br />&gt;<br />&gt; [...]<br />&gt;<br />&gt;&gt; --- src/http/ngx_http_header_filter_module.c.orig Tue May 14 12:17:59 2013<br />&gt;&gt; +++ src/http/ngx_http_header_filter_module.c Tue May 14 16:04:29 2013<br />&gt;&gt; @@ -382,7 +382,7 @@<br />&gt;&gt; if (r-&gt;headers_out.status == NGX_HTTP_SWITCHING_PROTOCOLS) {<br />&gt;&gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt;&gt;<br />&gt;&gt; - } else if (r-&gt;keepalive) {<br />&gt;&gt; + } else if ((r-&gt;keepalive) &amp;&amp; ((r-&gt;http_version == NGX_HTTP_VERSION_10) || (clcf-&gt;keepalive_header)) ) {<br />&gt;&gt; len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt;&gt;<br />&gt;&gt; /*<br />&gt;&gt; @@ -397,9 +397,7 @@<br />&gt;&gt; len += sizeof(&quot;Keep-Alive: timeout=&quot;) - 1 + NGX_TIME_T_LEN + 2;<br />&gt;&gt; }<br />&gt;&gt;<br />&gt;&gt; - } else {<br />&gt;&gt; - len += sizeof(&quot;Connection: close&quot; CRLF) - 1;<br />&gt;&gt; - }<br />&gt;&gt; + }<br />&gt;<br />&gt; &quot;Connection: close&quot; при выключенном keepalive'е нужно указывать,<br />&gt; не возвращать соответствующий заголовок - чревато ненужными<br />&gt; проблемами и безуспешными попытками клиентов послать в то же<br />&gt; соединение следующий запрос.<br />&gt;<br /><br />я понимаю ваши опасения, однако с точки зрения буквы закона, rfc 2616<br /><br />8.1.4 Practical Considerations<br /><br /><br />........<br /><br />A client, server, or proxy MAY close the transport connection at any<br />time.<br />.........<br /><br /><br /><br />с точки зрения духа закона так поступает IIS (по данным Netcraft-а 16%<br />сайтов), как-то же это работает ...<br /><br /><br /><br />у нас 50 миллионов запросов в день. это в районе 1 гигабайта на<br />хедерах &quot;Connection:&quot;. нам эта цифра интересна.<br />мы, пожалуй, потестируем, всех желающих тоже приглашаю к тесту.<br /><br /><br />&gt; Вообще я бы, честно говоря, не трогал это место.<br /><br />это абстрактные опасения или вы знаете сценарии, при которых это<br />приведет к проблемам ?<br /><br />&gt;<br />&gt;<br />&gt; --<br />&gt; Maxim Dounin<br />&gt; http://nginx.org/en/donation.html<br />&gt;<br />&gt; _______________________________________________<br />&gt; nginx-ru mailing list<br />&gt; nginx-ru@nginx.org<br />&gt; http://mailman.nginx.org/mailman/listinfo/nginx-ru<br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Илья Шипицин</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 11:40:01 -0400</pubDate></item>
<item>
<guid>http://forum.nginx.org/read.php?21,239165,239183#msg-239183</guid>
<title>Re: патч для Connection: Keep-Alive</title><link>http://forum.nginx.org/read.php?21,239165,239183#msg-239183</link><description><![CDATA[Hello!<br /><br />On Tue, May 14, 2013 at 06:15:05PM +0600, Илья Шипицин wrote:<br /><br />[...]<br /><br />&gt; во всех случаях, когда добавлялся Keep-Alive: timeout, добавлялся<br />&gt; также и Connection. не вижу ничего некорректного. можете уточнить ?<br />&gt;<br />&gt; другое дело, что я накосячил и не добавлял Keep-Alive: timeout там,<br />&gt; где предполагалось. да, признаю ошибку. вложил новый патч.<br /><br />Это я не досмотрел патч, и предположил не ту ошибку из двух<br />возможных.<br /><br />[...]<br /><br />&gt; --- src/http/ngx_http_header_filter_module.c.orig Tue May 14 12:17:59 2013<br />&gt; +++ src/http/ngx_http_header_filter_module.c Tue May 14 16:04:29 2013<br />&gt; @@ -382,7 +382,7 @@<br />&gt; if (r-&gt;headers_out.status == NGX_HTTP_SWITCHING_PROTOCOLS) {<br />&gt; len += sizeof(&quot;Connection: upgrade&quot; CRLF) - 1;<br />&gt;<br />&gt; - } else if (r-&gt;keepalive) {<br />&gt; + } else if ((r-&gt;keepalive) &amp;&amp; ((r-&gt;http_version == NGX_HTTP_VERSION_10) || (clcf-&gt;keepalive_header)) ) {<br />&gt; len += sizeof(&quot;Connection: keep-alive&quot; CRLF) - 1;<br />&gt;<br />&gt; /*<br />&gt; @@ -397,9 +397,7 @@<br />&gt; len += sizeof(&quot;Keep-Alive: timeout=&quot;) - 1 + NGX_TIME_T_LEN + 2;<br />&gt; }<br />&gt;<br />&gt; - } else {<br />&gt; - len += sizeof(&quot;Connection: close&quot; CRLF) - 1;<br />&gt; - }<br />&gt; + }<br /><br />&quot;Connection: close&quot; при выключенном keepalive'е нужно указывать,<br />не возвращать соответствующий заголовок - чревато ненужными<br />проблемами и безуспешными попытками клиентов послать в то же<br />соединение следующий запрос.<br /><br />Вообще я бы, честно говоря, не трогал это место.<br /><br /><br />--<br />Maxim Dounin<br />http://nginx.org/en/donation.html<br /><br />_______________________________________________<br />nginx-ru mailing list<br />nginx-ru@nginx.org<br />http://mailman.nginx.org/mailman/listinfo/nginx-ru]]></description>
<dc:creator>Maxim Dounin</dc:creator>
<category>Nginx Mailing List - Russian</category><pubDate>Tue, 14 May 2013 11:18:01 -0400</pubDate></item>
</channel>
</rss>