Den Ivanov | 1 Mar 05:34
Picon

очень много ошибок 499

Здравствуйте!<неи<неиВерсия 0.5.35, nginx стоит на
отдельном сервере, отдает
статику и проксирует запросы к php скриптам на сервер с апачем.<неиПоследнее
время в логах стало очень много ошибок 499, при том что
посетителей не стало
больше и нагрузка не возрастала. <неиНасколько я
понял, nginx таким образом
реагирует на клиентов, которые отвалились раньше
чем ответил проксируемый
апач. <неиКак узнать сколько клиент провисел ожидая
ответа, прежде чем
отвалиться? <неиС какой версии nginx стал выдавать
такой код ошибки?<неи
Den Ivanov | 1 Mar 05:36
Picon

solaris readv() error

Здравствуйте, уважаемые!

 

Nginx 0.5.35 в режиме прокси, solaris 10 x86, в логах появляются такие ошибки:

 

2008/02/29 03:04:33 [crit] 3274#0: *51525 readv() failed (22: Invalid argument) while reading upstream, client: 77.91.224.11, server: www.xxxxxx.ru, request: "GET /%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Allpages/%D0%91 HTTP/1.1", upstream: "fastcgi://10.10.10.10:1026", host: "www. xxxxxx.ru"

 

Что при этом получает клиент, пока не знаю. В изменениях NGINX нашел такую запись, очень похожую на мою ситуацию:

 

0.1.5                                                11.11.2004 

Исправление: в режиме прокси без использования sendfile на Solaris возникала ошибка "writev() failed (22: Invalid argument)". На других платформах, не поддерживающих sendfile, процесс зацикливался.

 

Igor Sysoev | 1 Mar 08:52
Picon

Re: очень много ошибок 499

On Sat, Mar 01, 2008 at 02:34:10PM +1000, Den Ivanov wrote:

> Здравствуйте!<неи<неиВерсия 0.5.35, nginx стоит на
отдельном сервере, отдает
> статику и проксирует запросы к php скриптам на сервер с апачем.<неиПоследнее
> время в логах стало очень много ошибок 499, при том что
посетителей не стало
> больше и нагрузка не возрастала. <неиНасколько я
понял, nginx таким образом
> реагирует на клиентов, которые отвалились раньше
чем ответил проксируемый
> апач.

Не только в этом случае. В случае картинок, 499 может
быть вызвана теми
же причинами, что и "accept() failed (53: Software caused connection abort)":
http://sysoev.ru/nginx/docs/faq.html

> <неиКак узнать сколько клиент провисел ожидая
ответа, прежде чем отвалиться?

$request_time.

<неиС какой версии nginx стал выдавать такой код ошибки?<неи

0.1.0

--

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

Igor Sysoev | 1 Mar 09:06
Picon

Re: solaris readv() error

On Sat, Mar 01, 2008 at 02:36:32PM +1000, Den Ivanov wrote:

> Nginx 0.5.35 в режиме прокси, solaris 10 x86, в логах появляются такие
> ошибки: 
> 
>  
> 
> 2008/02/29 03:04:33 [crit] 3274#0: *51525 readv() failed (22: Invalid
> argument) while reading upstream, client: 77.91.224.11, server:
> www.xxxxxx.ru, request: "GET
> /%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Allpages/%D0%91
> HTTP/1.1", upstream: "fastcgi://10.10.10.10:1026", host: "www. xxxxxx.ru"

Тут возмомжны два варианта:

1) ошибка в nginx'e - он передаёт в ядро неверные данные,

2) бэкенд закрыл соединение с RST и ядро считает сокет не соединённым.
   Другие ОС в отличии от Соляриса таких случаях вовращают
   "Connection reset by peer" или "Socket is not connected", что
   во-первых, отражает действительную причину ошибку,
а во-вторых,
   не смешивает серьёзную ошибку в самом приложении с
ошибкой, внешней
   по отношении к приложению.

> Что при этом получает клиент, пока не знаю. В
изменениях NGINX нашел такую
> запись, очень похожую на мою ситуацию: 

Оборванный ответ.

> 0.1.5                                                11.11.2004 
> 
> Исправление: в режиме прокси без использования sendfile
на Solaris возникала
> ошибка "writev() failed (22: Invalid argument)". На других платформах, не
> поддерживающих sendfile, процесс зацикливался.

--

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

Shestera S Leonid | 2 Mar 15:23
Picon

Проксирование почту

Здравствуйте.
Подскажите пожалуйста как на nginx осуществлять
проксирование почту?

Суть такая есть 3 exim и 3 dovecot поставленные на разные
сервера (у
всех внутрении ip)
есть сервер с nginx, на нем нужно балансировать
нагрузку, как я не очень понял.

вот кусок кода который нашел в сети

user mail mail;
worker_processes 1;

error_log /var/log/nginx/error_log info;

events {
        worker_connections  8192;
        use epoll;
}
mail {
      server_name  mail.*;
     auth_http    localhost:9000/cgi-bin/nginxauth.cgi; (вообще не
понял откуда это)

      imap_capabilities "IMAP4rev1" "UIDPLUS" "IDLE" "LITERAL+" "QUOTA";

      pop3_auth         plain apop cram-md5;
      pop3_capabilities "LAST" "TOP" "USER" "PIPELINING" "UIDL";

      smtp_auth         login plain cram-md5;
      smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
      xclient off;

      server {
          listen             192.168.1.18:25;
          protocol           smtp;
          timeout            300s;
      }
      server {
          listen     192.168.1.18:110;
          protocol   pop3;
          proxy      on;
          proxy_pass_error_message  on;
      }
      server {
          listen     192.168.1.18:143;
          protocol   imap;
          proxy      on;
      }
      server {
          listen             192.168.1.18:587;
          protocol           smtp;
          timeout            300s;
      }
  }

Помогите мне пожалуйста реализовать подобную схему.

P.S. и ещё вопрос не внему немного , но все рано спрошу, в
чем лучше
хранить базу пользователей? на текущий момент
остановился на Ldap.
Dmitry Morozovsky | 2 Mar 19:09
Picon

server_name_in_redirect Q

Коллеги,

подскажите, как нынче должна выглядеть конструкция,
аналогичная строке для 
предыдущих версий

server_name _ * ;

?

server_name _ ;
server_name_in_redirect off;

?

А то что-то у меня фигня пока что выходит.

Заранее спасибо.

Sincerely,
D.Marck                                     [DM5020, MCK-RIPE, DM3-RIPN]
[ FreeBSD committer:                                 marck <at> FreeBSD.org ]
------------------------------------------------------------------------
*** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck <at> rinet.ru ***
------------------------------------------------------------------------
umask | 2 Mar 19:42
Picon
Favicon

Re: Проксирование почту

"нам" тоже не очень понятно, что вы хотите сделать.

либо вы не поняли задачу и поэтому не можете объяснить
тут чего именно хотите, либо хотите странного.

02.03.08, 17:23, "Shestera S Leonid" <leonid@...>:

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

> Подскажите пожалуйста как на nginx осуществлять
проксирование почту?

> Суть такая есть 3 exim и 3 dovecot поставленные на разные
сервера (у

> всех внутрении ip)

> есть сервер с nginx, на нем нужно балансировать
нагрузку, как я не очень понял.

> вот кусок кода который нашел в сети

> user mail mail;

> worker_processes 1;

> error_log /var/log/nginx/error_log info;

> events {

>         worker_connections  8192;

>         use epoll;

> }

> mail {

>       server_name  mail.*;

>      auth_http    localhost:9000/cgi-bin/nginxauth.cgi; (вообще не

> понял откуда это)

>       imap_capabilities "IMAP4rev1" "UIDPLUS" "IDLE" "LITERAL+" "QUOTA";

>       pop3_auth         plain apop cram-md5;

>       pop3_capabilities "LAST" "TOP" "USER" "PIPELINING" "UIDL";

>       smtp_auth         login plain cram-md5;

>       smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;

>       xclient off;

>       server {

>           listen             192.168.1.18:25;

>           protocol           smtp;

>           timeout            300s;

>       }

>       server {

>           listen     192.168.1.18:110;

>           protocol   pop3;

>           proxy      on;

>           proxy_pass_error_message  on;

>       }

>       server {

>           listen     192.168.1.18:143;

>           protocol   imap;

>           proxy      on;

>       }

>       server {

>           listen             192.168.1.18:587;

>           protocol           smtp;

>           timeout            300s;

>       }

>   }

> Помогите мне пожалуйста реализовать подобную схему.

> P.S. и ещё вопрос не внему немного , но все рано спрошу, в
чем лучше

> хранить базу пользователей? на текущий момент
остановился на Ldap.

Shestera S Leonid | 2 Mar 20:14
Picon

Re: Проксирование почту

Приветсвую.
Спасибо за ответ.

Возможно я неправильно и выразился :)

Мне нужно чтобы nginx висел на ральном ip и принимал все
запросы на
smtp smtps pop3 pop3s imap imaps  и проксировал эти запросы на
внутрении почтовые сервера которые имеют внутрении
ip адреса на
которых почтовые сервера (exim, divecot) , и балансировал в
зависемости от нагрузки и доступности этих серверов.

Так надеюсь понятнее ? :)

2008/3/2 umask <umask <at> yandex.ru>:
> "нам" тоже не очень понятно, что вы хотите сделать.
>
>  либо вы не поняли задачу и поэтому не можете
объяснить тут чего именно хотите, либо хотите странного.
>
>
>
>  02.03.08, 17:23, "Shestera S Leonid" <leonid <at> shestera.ru>:
>
>
>
>
>
>  > Здравствуйте.
>
>  > Подскажите пожалуйста как на nginx осуществлять
проксирование почту?
>
>  > Суть такая есть 3 exim и 3 dovecot поставленные на разные
сервера (у
>
>  > всех внутрении ip)
>
>  > есть сервер с nginx, на нем нужно балансировать
нагрузку, как я не очень понял.
>
>  > вот кусок кода который нашел в сети
>
>  > user mail mail;
>
>  > worker_processes 1;
>
>  > error_log /var/log/nginx/error_log info;
>
>  > events {
>
>  >         worker_connections  8192;
>
>  >         use epoll;
>
>  > }
>
>  > mail {
>
>  >       server_name  mail.*;
>
>  >      auth_http    localhost:9000/cgi-bin/nginxauth.cgi; (вообще не
>
>  > понял откуда это)
>
>  >       imap_capabilities "IMAP4rev1" "UIDPLUS" "IDLE" "LITERAL+" "QUOTA";
>
>  >       pop3_auth         plain apop cram-md5;
>
>  >       pop3_capabilities "LAST" "TOP" "USER" "PIPELINING" "UIDL";
>
>  >       smtp_auth         login plain cram-md5;
>
>  >       smtp_capabilities "SIZE 10485760" ENHANCEDSTATUSCODES 8BITMIME DSN;
>
>  >       xclient off;
>
>  >       server {
>
>  >           listen             192.168.1.18:25;
>
>  >           protocol           smtp;
>
>  >           timeout            300s;
>
>  >       }
>
>  >       server {
>
>  >           listen     192.168.1.18:110;
>
>  >           protocol   pop3;
>
>  >           proxy      on;
>
>  >           proxy_pass_error_message  on;
>
>  >       }
>
>  >       server {
>
>  >           listen     192.168.1.18:143;
>
>  >           protocol   imap;
>
>  >           proxy      on;
>
>  >       }
>
>  >       server {
>
>  >           listen             192.168.1.18:587;
>
>  >           protocol           smtp;
>
>  >           timeout            300s;
>
>  >       }
>
>  >   }
>
>  > Помогите мне пожалуйста реализовать подобную схему.
>
>  > P.S. и ещё вопрос не внему немного , но все рано спрошу, в
чем лучше
>
>  > хранить базу пользователей? на текущий момент
остановился на Ldap.
>
>
Dmitry Morozovsky | 2 Mar 20:28
Picon

Re: server_name_in_redirect Q

On Sun, 2 Mar 2008, Dmitry Morozovsky wrote:

DM> подскажите, как нынче должна выглядеть
конструкция, аналогичная строке для 
DM> предыдущих версий
DM> 
DM> server_name _ * ;
DM> 
DM> ?
DM> 
DM> server_name _ ;
DM> server_name_in_redirect off;
DM> 
DM> ?
DM> 
DM> А то что-то у меня фигня пока что выходит.

Фигня выходила из-за того, что смотрел не туда. Sorry for the noise.


Sincerely,
D.Marck                                     [DM5020, MCK-RIPE, DM3-RIPN]
[ FreeBSD committer:                                 marck <at> FreeBSD.org ]
------------------------------------------------------------------------
*** Dmitry Morozovsky --- D.Marck --- Wild Woozle --- marck <at> rinet.ru ***
------------------------------------------------------------------------
lexpublic | 2 Mar 23:45
Picon

proxy_hide_header и error_page

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

Имеется:

location  / {
        include /etc/nginx/proxy.conf;
        proxy_pass http://haproxy;
}

location  /mirrors/ {
        internal;
        limit_conn   one 1;
        root /var/mirrors;
}

error_page  503  /503.html;

location  /503.html {
                internal;
                proxy_hide_header Content-Disposition;
                types { }
                default_type text/html;
                root  /var/www;
}

Запрос идёт через x-accel-redirect в /mirrors/ и попадает через
limit_conn 
в /503.html.

proxy_hide_header в /503.html не скрывает заголовок. Как сделать
чтобы 
заголовки от бэкенда скрывались при выводе ошибок?

nginx version: nginx/0.6.24

Алексей.

Gmane