Выдано 108932 лицензии

nginx

nginx — это HTTP-сервер и почтовый прокси-сервер, разработанный замечательным специалистом Игорем Сысоевым.  Сейчас nginx работает на множестве серверов, в том числе на большинстве серверов Рамблера.

Установка nginx

Переходим в /usr/local:

# cd /usr/local

Создаем директорию:

# mkdir nginx

Переходим в директорию /usr/local/nginx:

# cd nginx

Загружаем дистрибутив:

# wget http://www.sysoev.ru/nginx/nginx-0.7.61.tar.gz

Распаковываем:

# tar zxf nginx-0.7.61.tar.gz

Переходим в директорию nginx-0.7.61:

# cd nginx-0.7.61

Конфигурируем:

# ./configure

Собираем nginx:

# make

Устанавливаем nginx:

# make install

nginx будет установлен в каталог /usr/local/nginx/, директорию nginx-0.7.61 можно удалить.

Конфигурируем Apache

Откройте для редактирования файл /etc/httpd/conf/httpd.conf.

Укажем Apache на просмотр порта 8080, а не 80, для этого строку

Listen 8080

указываем вместо

Listen 80

и добавим строку:

NameVirtualHost *:8080

Необходимо откорректировать по адресу /var/www/vhosts/site.ru/conf/httpd.include или другом файле с описанием VirtualHost-ов на сервер, в файле заменяем:

<VirtualHost [IP-адрес или домен]:80>

на

<VirtualHost *:8080>

Перезапускаем Apache:

# service httpd restart

Реальные IP-адреса

При использовании типовой конфигурации nginx, Apache будет получать все запросы с единого IP-адреса, что не позволит вести корректную статистику.

Для решения проблемы необходимо установить дополнительный модуль reverse proxy add forward module.

Переходим в /usr/local/nginx:

# cd /usr/local/nginx 

Загружаем дистрибутив:

# wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.5.tar.gz

Распаковываем:

# tar -zxf mod_rpaf-0.5.tar.gz 

Переходим в /usr/local/nginx/mod_rpaf-0.5:

# cd /usr/local/nginx/mod_rpaf-0.5

Устанавливаем

# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Или

# apxs2 -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c

Добавим строку загрузки модуля в /etc/httpd/conf/httpd.conf:

LoadModule rpaf_module modules/mod_rpaf-2.0.so

и настройки модуля:

# Mod_rpaf settings
RPAFenable On
RPAFproxy_ips 127.0.0.1
# Исключить для версии 1.x
RPAFsethostname On

Параметр RPAFproxy_ips содержит перечень IP-адресов, обслуживаемых nginx. Если адресов несколько, укажите из через пробел, например, RPAFproxy_ips 127.0.0.1 xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy zzz.zzz.zzz.zzz

Внимание! Для nginx 1.x из конфигурации исключается строка RPAFsethostname On

Перезапускаем Apache:

# service httpd restart

Проблемы конфигурирования

Возможно, при конфигурировании возникнет ошибка из-за того, что не найдена та или иная библиотека, например, библиотека PCRE:

./configure: error: the HTTP rewrite module requires the PCRE library.
You can either disable the module by using --without-http_rewrite_module
option, or install the PCRE library into the system, or build the PCRE library
statically from the source with nginx by using --with-pcre= option.

Необходимо загрузить PCRE:

# wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.tar.gz

Распаковываем pcre-7.7.tar.gz:

# tar zxf pcre-7.7.tar.gz

Конфигурируем nginx, указывая путь к PCRE:

# ./configure --with-pcre=/usr/local/nginx/nginx-0.7.61/pcre-7.7

Отсутствует apxs или apxs2

Необходимо установить httpd-devel, выполним:

# yum install httpd-devel

Настройка nginx

Конфигурационный файл nginx располагается /usr/local/nginx/conf/nginx.conf

Пример конфигурационного файла:

# Количество процессов рекомендуется устанавливать равному количеству ядер CPU
worker_processes  1;

events {
    worker_connections  1024;
}

# [ debug | info | notice | warn | error | crit ]
error_log  /var/log/nginx.error_log error;

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/access.log main;
    # При большой посещаемости рекомендуется отключить логирование запросов
    # access_log off;
 
    sendfile       on;
    tcp_nopush     on;
    tcp_nodelay    on;
 
    # Настройки GZIP
    # http://sysoev.ru/nginx/docs/http/ngx_http_gzip_module.html
    gzip             on;
    gzip_min_length  1100;
    # Разрешает или запрещает сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа.
    gzip_proxied     expired no-cache no-store private auth;
    # Разрешает сжатие ответа методом gzip для указанных MIME-типов в дополнение к text/html, который сжимается всегда. 
    gzip_types       text/plain application/xml application/javascript application/x-javascript text/javascript text/js text/css;
    # Запрещаем сжатие gzip для IE6
    gzip_disable     "msie6";
    # Уровень gzip-компрессии
    gzip_comp_level 3;
 
    server {
        listen       80 default;
        server_name  site.ru www.site.ru;
        # access_log  /var/log/httpd/access.log  main;
 
        # Main location
        location / {
            proxy_pass         http://127.0.0.1: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_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              4 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }

        # Static files location
        location ~*^.+\.(jpg|jpeg|gif|png|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$
        {
            root   /var/www/vhosts/site.ru/httpdocs/;
        }
 
    }
}

В секции server_name  site.ru www.site.ru; указывается список доменов, которые будут обрабатываться nginx.

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

# Static files location

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|tar|wav|bmp|rtf|js)$ {

     root   /var/www/vhosts/site.ru/httpdocs/;

}

Не забудьте указать корректный путь к корневой директории сайта.

Автоматический запуск nginx

Для автоматического запуска добавим строку в /etc/rc.local

/usr/local/nginx/sbin/nginx