Установка и настройка связки Nginx+Apache

Установка и настройка связки Nginx+Apache

Очень часто скорость работы сайтов может быть замедленна из-за неправильной настройки веб-сервера. Нужно учитывать много факторов: сколько заходов в день на сайт, сколько из них с одного ip и так далее. Все пытаются упростить работу веб-сервера, чтобы ему было легче справляться с обработкой сайтов.

Самым лучшим способом оптимизации веб-сервера является настройка 2 веб-серверов в 1 связку.

Nginx - будет работать в роли фронтенда сервера, то есть первым встречать все запросы, если данные запросы будут статические (картинки, html-страницы, скрипты javascript и так далее), то Nginx будет их обрабатывать сам, а если динамические, то они будут передаваться 2-му веб-серверу.

Apache - веб-сервер, который будет работать в роли беккенда. Он будет принимать всю динамику от Nginx и обрабатывать ее.

Таким образом нагрузка на сервер снизится. Это очень удобно, сам Apache уже не будет принимать запросы от пользователей напрямую, ему все что нужно передаст Nginx, который проксирует все запросы и высылает на Apache. Одним выстрелом убиваем сразу 2 зайца: во первых Apache не нужно тратить на общение с пользователями много оперативной памяти и создавать для этого кучу дочерних процессов, и в тоже время Nginx обрабатывает статику и берет на себя все запросы от пользователей (которые составляют не маленькую часть исходящего трафика).

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

Установка nginx на centos:

Нужно подключить репозитории EPEL и CentALT.

для 64-битных ОС

  • rpm -ihv http://dl.fedoraproject.org/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm
  • rpm -ihv http://centos.alt.ru/repository/centos/5/x86_64/centalt-release-5-3.noarch.rpm

2) yum install nginx = установка.

3) chkconfig nginx on = добавляем в автозагрузку сервера.

4) vi /etc/nginx/nginx.conf

user www-data;

error_log /var/log/nginx/error.log debug;

pid /var/run/nginx.pid;

worker_rlimit_nofile 81145;

events {

worker_connections 1536;

}

http {

include /etc/nginx/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;

server {

listen 31.41.216.11:80; # ip тут пишем каждый свой.

# вместо abcname.com.ua пишем свой сайт.

server_name abcname.com.ua www.abcname.com.ua;

access_log /var/log/nginx/host.access.log main;

server_name_in_redirect off;

# в разделе 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;

proxy_connect_timeout 120;

}

# тут можем прописать или дописать статические файлы, которые должен обработать Nginx.

# Динамика буде переходить автоматически на Apache

location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|js)$ {

root /var/www/abcname.com.ua;

}

}

}

Установка Apache в centos

  • yum install httpd
  • vi /etc/httpd/conf/httpd.conf

Listen 31.41.216.11:8080

NameVirtualHost 31.41.216.11:8080

ServerAdmin webmaster@abcname.com.ua

DocumentRoot /var/www/abcname.com.ua/

ServerName abcname.com.ua

ErrorLog logs/abcname.com.ua-error_log

CustomLog logs/abcname.com.ua-access_log common

3) Перезагрузка веб-серверов

  • /etc/init.d/httpd restart
  • /etc/init.d/nginx restart

После проделанного данная технология должна работать корректно.