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

Андрей deepmindster at gmail.com
Thu Jun 5 02:51:04 MSD 2008


Доброго времени суток.

Собственно, хотелось убрать блокировку на диске. Для этого, как здесь и 
предлагалось несколько раз, установил связку nginx+nginx. Второй nginx 
отдаёт первому статику с диска, так как соединение по tcp-сокету, то, по 
идее, первый nginx, читая обычный сокет, не будет блокироваться и будет 
всегда готов принять соединение и выдать информацию из памяти(если она 
там есть), даже если диск сильно загружен. Настройки примерно такие - 
отключил сендфайл, proxy_buffering off, tcp_nopush on, tcp_nodelay off, 
gzip off. Собственно вопрос - не вопрос, а скорее просьба: глянте 
конфиг, кто может/желает, может чего путнее подскажете, у меня опыта нет 
в этом никакого почти - наверняка где-то что-то можно улучшить. Кроме 
того, не совсем ясно что делать с таймаутами и должно ли быть соединение 
keepalive между фронтендом и бекэндом?

конфиг фронтенда

server {

        listen xxx.xxx.xxx.xxx:80;
        server_name  example.com;

        root            /srv/www/vhosts/example.com;
        index           no-such-image;

        access_log      /var/log/nginx/example.com.access.log       main;

        client_max_body_size       16k;
        client_body_buffer_size    16k;

        location / {
            rewrite ^/images/(\d+).*$ /index.php?page=image_$1 last;
            deny all;
        }

        location = /index.php {
            proxy_pass          http://127.0.0.1:1028;

            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;

            proxy_connect_timeout      90;
            proxy_send_timeout         90;
            proxy_read_timeout         90;

            internal;
        }
}

конфигурация бэкенда:

user  nginx nginx;
worker_rlimit_nofile 10240;
worker_processes  4;

error_log  /var/log/nginx_127.0.0.1/error.log  warn;
pid        /var/run/nginx_127.0.0.1.pid;

events {
    worker_connections  10240;
    use epoll;
}

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

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

    access_log  /var/log/nginx_127.0.0.1/access.log  main;

    sendfile        off;

    tcp_nopush     on;
    keepalive_timeout  0;

    tcp_nodelay        off;

    gzip  off;

server {

        listen  127.0.0.1:1028;
        server_name  example.com;

        root            /srv/www/vhosts/example.com;

        access_log      
/var/log/nginx_127.0.0.1/example.com.access.log     main;

        client_max_body_size       16k;
        client_body_buffer_size    16k;

        location / {
            deny all;
        }

        location = /index.php {
            fastcgi_pass   127.0.0.1:1026;
            fastcgi_param  SCRIPT_FILENAME  
/srv/www/vhosts/example.com$fastcgi_script_name;
            include fastcgi_params;
        }

        location /saves {
            root /srv/www/vhosts/example.com;
            internal;
            expires 8h;
        }
    }
}


спасибо,
Андрей.





More information about the nginx-ru mailing list