Саратов + 26 °C 

Храмы Высота ЧБ Люди Вокзалы Парк Зима. Снег Саратов Сад-огород. Хлеба Грибы Лес Зима. Снег Цветы Живность Кошки Река Хлеба Лес Зима. Снег Новый Год Небо. Облака Радуга Курьезы Река Хлеба Лес Зима. Снег Небо. Облака Курьезы Астро Зима. Снег Новый Год Шарм Эль Шейх. Тропикана Гранд Азур Кошки Ящерица Йошкар-Ола. Казань. Чебоксары Гуамское ущелье Майкоп Грибы Зима. Снег Лошади Сад-огород. Зима. Снег Должанка Египет Люди Санкт-Петербург Санкт-Петербург Финляндия Финляндия Греция. Родос. Детский Сад 158 Новый Год Авто Мото Макро Карта Дети Питание Шарм Эль Шейх. Тропикана Гранд Азур Астро Набережная Петрозаводска Карелия. Путешествия. Весна Макро Карта Отдых Лыжные прогулки Стихи CentOS Oracle SAMBA GlassFish LAMP Motion EJabberd Postfix. Dovecot. Amavisd Perl Jabber VLC M3U Ubuntu
Твоя картинка. YouPict.Ru. Загрузи и Покажи
ДНЕВНИКИ


Назад >> Сергей ШИБКА >> CentOS


21.03.2012 CentOS 5.x и Nginx


Пакет Nginx. Устновка пакета Nginx в качестве прокси для Apache, не вызвала проблем.  Nginx будет отадавать статические элементы сайтов, картинки, файлы и т.д., а динамическое содержимое будет отдавать Apache.

Устновку можно делать из репозитория производителя:
wget http://nginx.org/packages/centos/5/noarch/RPMS/nginx-release-centos-5-0.el5.ngx.noarch.rpm
rpm -i nginx-release-centos-5-0.el5.ngx.noarch.rpm
yum install nginx

Можно устновить из собранного пакета:
wget http://centos.alt.ru/pub/repository/centos/5/i386/nginx-1.1.17-1.el5.i386.rpm
rpm -i nginx-1.1.17-1.el5.i386.rpm
или
wget http://centos.alt.ru/pub/repository/centos/5/i386/nginx-stable-1.0.14-1.el5.i386.rpm
rpm -i nginx-stable-1.0.14-1.el5.i386.rpm

После успешной устновки добавлем в автозагрузку:
chkconfig nginx on

Настройка. Описание директив управления для конфигов Nginx есть на сайте производителя. Каждый может создать свой конфиг, для своих нужд. Но, сначала нужно перенастроить конфиг Apache.


1. Apache
Открываем /etc/httpd/conf/httpd.conf

Находим директиву Listen, и приводм её к виду (чтобы Apache слушал на 127.0.0.1 и на порту 8080):
Listen 127.0.0.1:8080

Находим директиву ServerName, и приводм её к виду:
ServerName server.ru:8080

Теперь, если используется больше одно вебсервиса, и для них применяются директивы виртуального хоста, то ищем директиву NameVirtualHost, и приводим её к виду:
NameVirtualHost 127.0.0.1:8080

Далее, директиву VirtualHost в каждой секции вирутального хоста приводим к виду:
VirtualHost 127.0.0.1:8080

Теперь наступает момент истины, необходимо добавить модуль mod_rpaf для Apache. Он необходим для передачи реального IP адреса в логи Apache при запросах идущих через Nginx. Если этого модуля не будет, то в логи будет попадать IP адрес на котором висит Nginx, а должен быть реальный IP адрес с коротого пришел запрос.

В стандартном репозитории его нет, тогда берем готовый пакет:
wget http://centos.alt.ru/pub/repository/centos/5/i386/mod_rpaf-0.6-2.el5.i386.rpm
rpm -i mod_rpaf-0.6-2.el5.i386.rpm

Открываем /etc/httpd/conf/httpd.conf

Находим секцию Dynamic Shared Object (DSO) Support и после последнего модуля, добавлем настройки для модуля mod_rpaf (127.0.0.1 IP адрес на котором висит Apache, 192.168.0.1 IP адрес на котором висит Nginx):

LoadModule rpaf_module modules/mod_rpaf-2.0.so
RPAFenable On
RPAFsethostname Off
RPAFproxy_ips 127.0.0.1 192.168.0.1
RPAFheader X-Real-IP
RPAFheader X-Forwarded-For


Запускаем service httpd start или перезапускаем service httpd start наш Apache.


2. Nginx

Открываем файл /etc/nginx/nginx.conf

Делаем такой вид (конфиг делал для себя):

user  nginx;
worker_processes  3;
worker_rlimit_nofile 100000;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
    use epoll;
}


http {
    include       /etc/nginx/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"';

    access_log  /var/log/nginx/access.log  main;
    
    client_header_timeout  3m;
    client_body_timeout    3m;
    send_timeout           3m;
    client_max_body_size   200m;
                
    sendfile        on;
    tcp_nopush      on;
    tcp_nodelay     on;
    server_tokens   off;
    
    gzip            on;
    gzip_static     on;
    gzip_comp_level 5;
    gzip_min_length 1024;
    #
    gzip_buffers     4 8k;
    output_buffers   1 32k;
    postpone_output  1460;
    gzip_proxied any;
    gzip_types text/plain application/xml application/x-javascript text/javascript text/css;
    #

    keepalive_timeout  65;

    include /etc/nginx/conf.d/*.conf;
}

 
Открываем папку /etc/nginx/conf.d

В файле /etc/nginx/conf.d/default.conf храняться настройки для сайтов. Для удобства я его переименовал в default.conf.default, чтобы основной конфиг Nginx не читал его директивой include.

Создал свой файл /etc/nginx/conf.d/virtual.conf для виртуальных хостов связанных с Apache.

Делаем такой вид (конфиг делал для себя):

server {
    listen server1.ru;
    server_name server1.ru www.server1.ru;
    access_log /var/log/nginx/host.access.log main;
    
    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;        
        
    }
    
    error_page 404 /404.html;
    location = /404.html {
            root   /usr/share/nginx/html;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
            root   /usr/share/nginx/html;
    }     
    location ~* \.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|mp3|bmp|rtf|flv|swf|avi|mp4|css|js)$ {
           expires max;
           root  /www/www.server1.ru/www;
    }
}


server {
    listen server2.ru;
    server_name server2.ru www.server2.ru;
    access_log /var/log/nginx/host.access.log main;
    
    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;        
        
    }
    
    error_page 404 /404.html;
    location = /404.html {
            root   /usr/share/nginx/html;
    }
    
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
            root   /usr/share/nginx/html;
    }     
    location ~* \.(jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|mp3|bmp|rtf|flv|swf|avi|mp4|css|js)$ {
           expires max;
           root  /www/www.server2.ru/www;
    }
}


Секций server делаем столько, сколько у вас виртуальных хостов в Apache.

listen server1.ru; Привязываем имя server1.ru и Nginx слушать на 80 порту
server_name server1.ru www.server1.ru;
Имя сервера и его алиасы
proxy_pass http://127.0.0.1:8080/; Переброска запросов на наш Apache

Запускаем Nginx:
service nginx start
 




комментарии (0)


[ Назад ]


© 2005 - 2018 * Сергей Шибка