HTTP/0.9 200 OK
Igor Sysoev
igor на sysoev.ru
Чт Окт 21 12:27:53 MSD 2010
On Thu, Oct 21, 2010 at 11:54:38AM +0400, Vladimir Rusinov wrote:
> На одном из серверов периодически появляется проблема - иногда на запросы
> (как к статике, так и к динамике) он отвечает HTTP/0.9 200 OK и пустым
> телом.
>
> Вот пример, пойманый одним из разработчиков (мне пока проблему поймать не
> удалось):
> [image: 09200.png]
>
>
> Если картинку не видно - там скриншот из firebug, POST в
> /logic?cmd=<xxx>&user_id=123<и так далее> со вполне вменяемыми заголовками
> (единственная странность - Referer "http"). В ответе сервера - "HTTP/0.9 200
> OK" и более ничего.
nginx выдать именно эту строку не может, потому что "HTTP/0.9" - это ответ
без статуса и заговка вообще. Скорее всего, это интерпретация некого
необычного ответа самим firebug'ом. Возможно, это просто закрытое соединение.
> Сервер достаточно нагруженый, запрос делается из флешового приложения.
>
> # nginx -V
> nginx version: nginx/0.7.65
> TLS SNI support enabled
> configure arguments: --prefix=/usr --with-cc-opt=-I//usr/include
> --with-ld-opt=-L//usr/lib --conf-path=/etc/nginx/nginx.conf
> --http-log-path=/var/log/nginx/access_log
> --error-log-path=/var/log/nginx/error_log --pid-path=/var/run/nginx.pid
> --http-client-body-temp-path=/var/tmp/nginx/client
> --http-proxy-temp-path=/var/tmp/nginx/proxy
> --http-fastcgi-temp-path=/var/tmp/nginx/fastcgi
> --without-http_fastcgi_module --without-http_gzip_module
> --with-http_ssl_module --with-http_perl_module
> --with-http_stub_status_module --without-mail_imap_module
> --without-mail_pop3_module --without-mail_smtp_module
>
> Конфиг довольно странный, писался не мной и имеет примерно следующий вид:
>
> server {
> listen 80;
> server_name *.road404.ru "";
>
> set $project "cdn";
> if ($host ~* "flowergame\.ru$") {
> set $project "flower";
> <...>
> if ($project = "cdn") {
> rewrite ^/([^/]+)(.*) /static$2;
>
> set $project $1;
> }
>
> set $debug "";
> if ($host ~* "^test") {
> set $debug "1";
> }
>
> location = / {
> if ($project = "flower") {
> rewrite .* "
> http://www.facebook.com/apps/application.php?id=142492545782327"
> permanent;
> }
> }
>
> location / {
> rewrite (.*) /static$1 last;
> }
>
> location /static {
> root /opt/$project;
> }
> location /get_iframe {
> rewrite [^\?]*(.*) /backend/get_iframe.php$1 last;
> }
>
> location /logic {
> rewrite [^\?]*(.*) /backend/gateway.php$1 last;
> }
>
> <...>
> location /backend {
> internal;
>
> set $partner "";
> if ($host ~* "^(test\.)?ok\.") {
> set $partner "odnoklassniki";
> }
> if ($host ~* "^(test\.)?mm\.") {
> set $partner "mail";
> }
> if ($host ~* "^(test\.)?vk\.") {
> set $partner "vkontakte";
> }
> if ($host ~* "^(test\.)?fb\.") {
> set $partner "facebook";
> }
>
> proxy_redirect off;
> proxy_set_header Partner $partner;
> proxy_set_header Debug $debug;
> proxy_set_header Secure "";
> #proxy_set_header Host $host;
> #proxy_set_header X-Real_IP $remote_addr;
>
> if ($debug) {
> rewrite /backend(.*) /$project/backend$1 break;
>
> proxy_pass http://127.0.0.1:8000;
> }
> if ($partner != "") {
> rewrite /backend(.*) /$project/backend$1 break;
>
> proxy_pass http://backend_group;
> }
> }
>
> Может ли такое поведение быть связано со странностью конфига. Что вообще
> может заставить отвечать nginx именно так.
Честно говоря, смотреть на этот конфиг мне мучительно больно.
--
Игорь Сысоев
http://sysoev.ru
Подробная информация о списке рассылки nginx-ru