Очень часто скорость работы сайтов может быть замедленна из-за неправильной настройки веб-сервера. Нужно учитывать много факторов: сколько заходов в день на сайт, сколько из них с одного 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
После проделанного данная технология должна работать корректно.