ПРОЕКТЫ 


  АРХИВ 


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: accept_filter и backlog на непервом default-сервере


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: accept_filter и backlog на непервом default-сервере
  • From: "Никита Козлов" <niakrisn@xxxxxxxxx>
  • Date: Sat, 20 Sep 2008 14:43:04 +0400
  • Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from:to :subject:in-reply-to:mime-version:content-type:references; bh=kEYV7710rXoQaji+OTXiJeD8pHhRuco3/bx3Ctcy4o0=; b=J0i7CGRVV3W7kCO/Kv0SqlTEJEmG+GPAdfCpmfjcFjDxo6/gg5fvlpcl3OJC/zM5UF mKRH8jDH7NSDe87TK6YIXzH37N/G82hKZlRIL6GydEct7kMHhb4RF9XOl2Nr/9aL0k99 l0VfTPFsYtvw+7YHiUFa4fSfjbD4F2KmE9Ovc=
  • Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:to:subject:in-reply-to:mime-version :content-type:references; b=TzoJxaGOnWnq3ReUxZY3BxJpnLhHVpBNjTxoc8VTAKkAQWUfrJUN7v/zfj8UUAHjlN JAAXbLw9Lq7Bw9zcm0xqurOCA2rYTlg/y998U2H0xxkrB3sKVEvjnW0c82gi15JuZY1v x9oBk0seS222yGgt5XaKf6MVZz3fz9ReEEp2o=
  • In-reply-to: <20080919180038.GB37404@xxxxxxxxxxxxx>
  • References: <200808271517.10458.me@xxxxxxxxx> <20080827132643.GA74546@xxxxxxxxxxxxx> <241feca80809191027v4c7dedcfmd4599a3b6ace977f@xxxxxxxxxxxxxx> <20080919180038.GB37404@xxxxxxxxxxxxx>

В общем есть основной конфиг в котором описана директива инклуд, которая в свою очередь инклудит файлы с конфигурациями виртуальных серверов. Вот шаблон конфига виртуального сервера:

server {
    listen      #IP#:80;
    server_name #DOMAIN#.ru www.#DOMAIN#.ru;

    access_log /var/log/nginx/production/#PRE_DOMAIN#.log def;

    location / {
        proxy_pass         http://#DEST-IP#:80;
            proxy_redirect     off;
        proxy_set_header   Host             $host;
            proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

            client_max_body_size       10m;
            client_body_buffer_size    128k;

        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              128 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {
        root   html;
    }

    location ~ /\.ht {
        deny  all;
    }
}
server {
    listen      #IP#:8081;
    server_name #DOMAIN#.ru www.#DOMAIN#.ru;

    access_log /var/log/nginx/def/#PRE_DOMAIN#.log def;

    root    /usr/home/#PRE_DOMAIN#/def/;

    {опущены некоторые rewrite правила}

    location /kcaptcha/ {
        proxy_pass         http://#LOCAL-IP#:8080/;
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

        client_body_temp_path      /var/tmp/nginx/client_body_temp;
        client_max_body_size       10m;
        client_body_buffer_size    128k;

        proxy_connect_timeout      75;
        proxy_send_timeout         180;
        proxy_read_timeout         180;

        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
    }
}

и вот конфиг дефолтного виртуального сервера

server {
    listen 80 default accept_filter=httpready;

    root /usr/local/etc/nginx/default_vhost/;

    rewrite ^/(.*)$ /index.html break;

    index index.html;
}


основной конфиг

user  www;
worker_processes  1;

error_log  /var/log/nginx/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
    worker_connections  200000;
}

http {
    open_file_cache          max=1000  inactive=20s;
    open_file_cache_valid    30s;
    open_file_cache_min_uses 2;
    open_file_cache_errors   on;

    server_tokens off;

    client_max_body_size 15m;

    include       mime.types;
    default_type  application/octet-stream;

    log_format main '$remote_addr - $remote_user [$time_local] $request '
                    '"$status" $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for"';

    log_format def  '$remote_addr - $remote_user [$time_local] $request '
                            '"$status" $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for" '
                            '$request_time ' '$connection';

    access_log  /var/log/nginx/access.log def;

    sendfile        on;
    tcp_nopush     on;

    #output_buffers 1 32k;
    postpone_output 1460;

    keepalive_timeout  65;
    reset_timedout_connection on;

    #gzip  on;

    include vhosts/*.conf;
}


Спасибо.


19 сентября 2008 г. 22:00 пользователь Igor Sysoev <is@xxxxxxxxxxxxx> написал:
On Fri, Sep 19, 2008 at 09:27:48PM +0400, Никита Козлов wrote:

> Игорь, а в 0.7.14 этот патч включен в исходники?
> Просто на этой версии не работает.
> Описываю дефолтный виртуальный сервер со своей рут директорией,
> перезапускаю, ругани никакой нет.
> На каждом из адресов есть свой виртуальный сервер с описанной
> директивой server_name.
> Если обратиться напрямую по IP через броузер, то обслуживает тот виртуальный
> сервер в котором описана server_name, а не default сервер.
>
> Или я чего то не понимаю и так и должно быть?
> Конфиги проверил default в listen только для одного виртуального сервера.

Патч есть в 0.7.14, но это должно работать и без патча.
Как выглядит конфигурация ?

> 27 августа 2008 г. 17:26 пользователь Igor Sysoev <is@xxxxxxxxxxxxx>написал:
>
> > On Wed, Aug 27, 2008 at 03:17:10PM +0400, jackal wrote:
> >
> > > Задача:
> > > Нужно чтобы один домен на одном айпи a.b.c.d обслуживался одной
> > директивой
> > > server, а все остальные домены (на всех айпи, в т.ч. a.b.c.d - другой
> > > директивой server)
> > >
> > > Сделано вот так:
> > > server {
> > >       listen a.b.c.d:80;
> > >       server_name domain.ru;
> > >       ...
> > > }
> > > server {
> > >       listen a.b.c.d:80 default accept_filter=httpready backlog=1024;
> > >       listen 80 default accept_filter=httpready backlog=1024;
> > >       ...
> > > }
> > >
> > > Вопрос - почему не выставляется backlog для айпи a.b.c.d, и выставляется
> > ли
> > > accept_filter?
> > >
> > > # sysctl kern.ipc.somaxconn
> > > kern.ipc.somaxconn: 4096
> > >
> > > # netstat -Lan
> > > Current listen queue sizes (qlen/incqlen/maxqlen)
> > > Proto Listen         Local Address
> > > tcp4  0/0/4096       a.b.c.d.80
> > > tcp4  0/0/1024       *.80
> >
> > Прилагаемый патч должен помочь.
> >
> >
> > --
> > Игорь Сысоев
> > http://sysoev.ru
> >

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




 




Copyright © Lexa Software, 1996-2009.