ДНЕВНИКИ
Назад >>
Сергей ШИБКА
>>
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)
[ Назад ]
|