====== Переход с Apache на Nginx ====== Что это нам даст? Заметно снизит нагрузку на ЦПУ. Получится так сказать апгрэйд CPU на Вашем сервере. Установим **nginx** из официального репозитария **NGINX**. touch /etc/yum.repos.d/nginx.repo mcedit /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1 И сохраняем файл. Обновим информацию о пакетах. yum update Установим веб-сервер yum install nginx Добавим его в автозагрузку chkconfig --level 345 nginx on Установим backend php-fpm yum install php-fpm Добавим php-fpm в автозагрузку chkconfig --level 345 php-fpm on Остановим веб-сервер apache /etc/init.d/httpd stop Создадим самоподписанный сертификат для nginx mkdir /etc/nginx/conf.d/ssl cd /etc/nginx/conf.d/ssl openssl req -new -newkey rsa:1024 -nodes -keyout ca.key -x509 -days 500 -subj /C=UA/ST=Kiev/L=Kiev/O=Companyname/OU=User/CN=etc/emailAddress=admin@my_site.com -out ca.crt Дабы не вводить все параметры, мы использовали опцию -subj Параметры не обязательны, но для порядка лучше заполнить своими данными **С** Двухсимвольный код страны (Country) **ST** Название региона/области/края/республики/… (State Name) **L** Название города/поселка/… (Locality Name) **O** Название организации (Organization Name) **OU** Название отдела (Organization Unit) **CN** Имя сертификата, при создании серверных сертификатов используется доменное имя сайта (Common Name) **emailAddress** почтовый адрес (E-mail address) Настроим php-fpm По умолчанию менеджер процессов слушает listen = 127.0.0.1:9000 Я настроил его работать через сокет. mcedit /etc/php-fpm.d/www.conf Под закомментированной строчкой **;listen = 127.0.0.1:9000** добавим: listen = /tmp/php-worker-socket Запустим php-fpm /etc/init.d/php-fpm start Должен сформироваться файл сокета ls -l /tmp/ srw-rw-rw- 1 root root 0 Фев 27 20:54 php-worker-socket Настроим теперь nginx mcedit /etc/nginx/nginx.conf worker_processes CPU*2; Ставим значение кол-во CPU умноженное на 2. Можете сменить владельца файлов в веб-дирректории user nginx; заменить на user apache; В секцию http этого конфига, добавим следующие параметры. proxy_connect_timeout 600s; proxy_send_timeout 600s; proxy_read_timeout 600s; fastcgi_send_timeout 600s; fastcgi_read_timeout 600s; Очищаем папку **/etc/nginx/conf.d** от всех файлов, оставляем только дирректорию **ssl**. Создадим два файла для хостов админки и личного кабинета touch /etc/nginx/conf.d/admin.conf touch /etc/nginx/conf.d/stat.conf **Вирт. хост админки** server { listen *:80; server_name admin.lan; rewrite ^ https://$server_name/$1 permanent; } server { listen *:443; server_name admin.lan; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_certificate /etc/nginx/conf.d/ssl/ca.crt; ssl_certificate_key /etc/nginx/conf.d/ssl/ca.key; access_log off; error_log /var/log/nginx/error.log; root /var/www/mikbill/admin; index index.php; location / { root /var/www/mikbill/admin; index index.php; try_files $uri $uri/ /index.php?$args; } location ~* ^/(app/|res/balanse/|res/convert/|res/convert2/|res/convert3/|res/history/|res/pcq/|res/shapers/|res/sms/|res/smspilot/|res/smsukr/|res/ssh/|res/w.qiwi.ru/|sys/scripts/|sys/updates/).*\.(xml|sh|php|log|sql|txt)$ {deny all;} location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/tmp/php-worker-socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/mikbill/admin/$fastcgi_script_name; } } Где есть **admin.lan** - имя Вашего домена или ip-адрес. **Вирт. хост личного кабинета:** server { listen *:80; server_name stat.lan; rewrite ^ https://$server_name/$1 permanent; } server { listen *:443; server_name stat.lan; ssl on; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; ssl_certificate /etc/nginx/conf.d/ssl/ca.crt; ssl_certificate_key /etc/nginx/conf.d/ssl/ca.key; access_log off; error_log /var/log/nginx/error.log; root /var/www/mikbill/stat; index index.php; location / { root /var/www/mikbill/stat; index index.php; try_files $uri $uri/ /index.php?$args; } location ~* ^(/app/|/sys/).*\.(php|sh|xml|log|txt)$ {deny all;} location ~ \.php$ { include /etc/nginx/fastcgi_params; fastcgi_pass unix:/tmp/php-worker-socket; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www/mikbill/stat/$fastcgi_script_name; } } Где есть **stat.lan** - имя Вашего домена или ip-адрес. Сделаем перезапуск nginx /etc/init.d/nginx restart Если всё работает незабываем убрать apache из автозагрузки. chkconfig httpd off В настройках nginx приведён минимум настроек, конфиги правим сами под свои нужды. Если используете rewrite, рекомендуется использовать доменные имена.