Предполагается, что Apache HTTP уже установлен
Для установки NGINX подключим его родной репозиторий:
# rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
Retrieving http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
warning: /var/tmp/rpm-tmp.K7nOMw: Header V4 RSA/SHA1 Signature, key ID 7bd9bf62: NOKEY
Preparing… ########################################### [100%]
1:nginx-release-centos ########################################### [100%]
Проверяем:
# yum repolist | grep nginx
nginx nginx repo 56
Устанавливаем NGINX:
# yum -y install nginx --enablerepo="nginx"
Проверяем:
# yum list installed | grep nginx
nginx.x86_64 1.6.0-1.el6.ngx @nginx
nginx-release-centos.noarch
Редактируем файл /etc/nginx/nginx.conf
, устанавливаем:
user nginx; # пользователь, под которым будет работать nginx;
worker_processes 1; # кол-во процессов nginx, по кол-ву ядер/процессоров;pid /var/run/nginx.pid;events {
worker_connections 1024; # макс. кол-во одновременно обслуживаемых соединений, считается макс. клиентов = worker_processes * worker_connections
}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;
error_log /var/log/nginx/error.log;# немного тюнинга
sendfile on;
tcp_nopush on;
server_tokens off;
keepalive_timeout 65;# сжатие некоторых данных перед отправкой
gzip on;
gzip_static on;
gzip_comp_level 5;
gzip_min_length 1024;# ограничиваем кол-во подключений с одного IP ко всем сайтам;
# что бы установить различные ограничения для каждого отдельного виртуалхоста - перенесите limit_conn perip в блок server каждого конфига;
limit_zone myzone $binary_remote_addr 2m;
limit_conn perip 5;# для Apache
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;# подключем директорию для файлов конфигурации виртуалхостов
include /etc/nginx/conf.d/*.conf;# описываем сервер по-умолчанию
server {
listen 80 default;location ~ /.ht {
deny all;
}location / {
proxy_pass http://127.0.0.1:8080;
}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;
}
}
}
Убираем ненужный теперь конфиг сервера по-умолчанию:
# mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bkp
Проверяем синтаксис:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Редактируем /etc/httpd/conf/httpd.conf
, меняем:
Listen 80
На
Listen 127.0.0.1:8080
Редактируем файл виртуалхоста /etc/httpd/conf.d/test.t.conf, меняем:
<VirtualHost 77.***.***.20:80>
на:
<VirtualHost 127.0.0.1:8080>
Проверяем конфиг:
# httpd -t
Syntax OK
Создаём файл конфигу виртуалхоста для NGINX – /etc/nginx/conf.d/test.t.conf:
server {
listen 80;
server_name test.t www.test.t;
access_log /var/www/user1/logs/test.t.nginx.access.log combined;
error_log /var/www/user1/logs/test.t.nginx.error.log error;
client_max_body_size 50m;
location ~* \.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|wav|bmp|rtf|swf|js|html|htm|)$ {
root /var/www/user1/site/test.t;
}
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass_header Set-Cookie;
}
}
Создадим лог файлы
touch /var/www/user1/logs/test.t.nginx.access.log
touch /var/www/user1/logs/test.t.nginx.error.log
Останавливаем Apache:
# service httpd stop
Stopping httpd: [ OK ]
И запускаем NGINX:
# service nginx start
Starting nginx: [ OK ]
Запускаем Apache:
# service httpd start
Starting httpd: [ OK ]
Проверяем порты:
# netstat -anp | grep -E "nginx|httpd"
tcp 0 0 127.0.0.1:8080 0.0.0.0:* LISTEN 4597/httpd
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4584/nginx
И отдельно – установим mod_rpaf
, что бы в логе Apache отображались корректные IP, а не 127.0.0.1:
Во многих (да почти всех) мануалах говорится про репозиторий CentALT, который сейчас отдаёт 403 при любом запросе. Потому – установим вручную.
Ставим набор утилит http-devel
и компилятор gcc
:
# yum -y install httpd-devel gcc
Переходим в директорию src
:
cd /usr/local/src
Качаем архив и устанавливаем mod_rpaf
:
# wget http://drupion.com/sites/default/files/mod_rpaf-0.6.tar_.gz
# tar zxvf mod_rpaf-0.6.tar_.gz
если не разархивируется то:
(wget http://stderr.net/apache/rpaf/download/mod_rpaf-0.6.tar.gz
Если скачать не получается, просто добавьте в /etc/hosts:
178.236.176.177 stderr.net)
# cd mod_rpaf-0.6
# apxs -i -c -n mod_rpaf-2.0.so mod_rpaf-2.0.c
Ждём появления:
Libraries have been installed in:
/usr/lib64/httpd/modules
Всё установилось.
Создаём файл /etc/httpd/conf.d/mod_rpaf.conf
с таким содержимым:
LoadModule rpaf_module modules/mod_rpaf-2.0.so
# mod_rpaf configuration
RPAFenable On
RPAFsethostname On
RPAFproxy_ips 127.0.0.1
RPAFheader X-Forwarded-For
Перезапускаем Apache:
# service httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
Мониторинг сервера nginx
В конфиге nginx (любого из сайтов через который будем смотреть статистику) прописываем секцию
location = /stat
{
stub_status on;
access_log off;
allow 127.0.0.1;
allow xxx.xxx.xxx.xxx; (указываем IP адрес с которого производится просмотр статистики)
deny all; }
Перезапускаем nginx и теперь статистику работы можно смотреть по адресу https://sidmid.ru/stat
Active connections – Количество всех открытых соединений. Это не количество пользователей которые подключились к сайту, один пользователь для одного просмотра страницы может открыть множество одновременных соединений к серверу.
Server accepts handled requests – Этот параметр показывает, три значения:
- Первый — это количество всех принятые соединений.
- Второй — это количество всех прерванных соединений. Обычно первые 2 значения одинаковы.
- Третий — это количество обрабатывающихся запросов (как правило, данный параметр больше чем второе значение).
- Разделив третье число на второе, вы получите количество запросов на каждое соединение обрабатываемых в Nginx.
Reading – Количество считаных заголовков запроса в nginx.
Writing – Nginx читает тело запроса, обрабатывает запрос, или пишет ответ на клиента.
Waiting – Keep-Alive соединения, на самом деле активно – (чтение + запись). Эта величина зависит от keepalive-timeout. Это значение можно проигнорировать. Хотя, вы можете прописать принудительно данное значение в нулевое ожидание, установив keepalive_timeout=0;
status nginx может работать с графическими инструментами (cacti или RRDTool).
Мониторинг сервера apache
Расскомментируем в файле /etc/httpd/conf/httpd.conf
ExtendedStatus On
и добавим в виртуалхост:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
теперь статистику работы nginx можно смотреть по адресу http://simple.com/server-status