
Тази статия е част от нашата серия „Съвети и трикове“. За да избегнем объркване разделихме статията на две части. Първата е за Nginx, а втората за PHP-FPM.
Моля, имайте предвид, че тези съвети може да не работят във всяка ситуация; те се базират изцяло на личен опит!
Съвет Nginx 1 – Файловете за конфигурация на Nginx обикновено се намират по пътя /etc/nginx.
Ето един добър начин за конфигуриране и организиране на файловете използвай Debian/Ubuntu Apache стил настройка:
## Основен конфигурационен файл ##
/etc/nginx/nginx.conf## Виртуални хост конфигурационни файлове ##
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/## Други конфигурационни файлове (ако е нужно) ##
/etc/nginx/conf.d/
Ако вашият хост е виртуален, има втори път, това е защото сайтът може да съдържа какъвто и да е съдържание.
## Зареждане на файловете за конфигурация на виртуален хост. ##
include /etc/nginx/sites-enabled/*;## Зареди други конфигурации от conf.d/ ##
include /etc/nginx/conf.d/*;
Съвет Nginx 2 – Определете worker_processes и worker_connections
Стандартната настройка работи добре за worker_processes и worker_connections, но може да бъде оптимизирана още малко, нали?
Базова настройка:
worker_processes 1;
worker_connections 1024;
Обикновено тази 1000 едновременни връзки са чудесни, но понякога може да са бавни и това да накара Nginx да блокира на 1/0 операции. За да избегнете това, използвайте следното: една worker_processes за всяко процесорно ядро, например:
worker_processes [number of processor cores];
Използвайте тази команда, за да определите колко активни процесорни ядра имате
cat /proc/cpuinfo |grep processor
processor : 0
processor : 1
processor : 2
processor : 3
Виждате, че тук имате 4 активни ядра
Крайна настройка
worker_processes 4;
Връзки за работата
Много хора обичат да държат 1024 връзки, но ако за вас това не е достатъчно можете да увеличите до 2048 връзки на секунда.
worker_connections 1024;
Някои администратори правят различни конфигурации, за да увеличат трафика, например като зададат връзките до 20000, но това ще доведе до повече вреда, отколкото полза.
Съвет Nginx 3 – Скриване на Nginx Server Tokens/ Скриване на версията на Nginx
Обикновено това се използва за сигурност, особено ако използвате остарял Nginx
server_tokens off;
Съвет Nginx 4 – Максимален размер на заявката/Upload Max Body Size (client_max_body_size)
Ако искате потребителите да могат да качват съдържание на сайта ви, направете следната конфигурация:
client_max_body_size 20m;
client_body_buffer_size 128k;
“Request Entity Too Large” (413) – Ако тази грешка се появи на екрана ви, клиентският максимален размер е твърде малък.
Съвет Nginx 5 – Nginx Cache Control за статични файлове (директиви за браузър кеширане)
Следвайте тази настройка:
location ~* \\.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
access_log off;
log_not_found off;
expires 360d;
}
Ако искате да спестите ресурси и широчината на лентата.
Съвет Nginx 6 – Nginx пренасочва PHP заявките към PHP-FPM
# Pass PHP scripts to PHP-FPM
location ~* \\.php$ {
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/var/run/php-fpm/php-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
Съвет Nginx 7 – Блокиране (deny) на достъп до скрити файлове с Nginx
Следвайте забрана за достъп и изключете логването за всички скрити файлове.
location ~ /\\. {
access_log off;
log_not_found off;
deny all;
}
Е, приятели, това са хитрите и съветите, които открихме за Nginx. Очаквайте продължението за втората част на тази статия – Съвети и трикове за конфигурация на PHP-FPM
Първи съвет – Файлове за конфигурация
Файловете за конфигурация на PHP-FPM са в etc/php-fpm.conf и /etc/php-fpm.d. За по-добра конфигурация трябва да добавите ред include.
Ето как би трябвало да изглежда:
include=/etc/php-fpm.d/*.conf
Втори съвет – Глобални настройки
Конфигурирайте аварийно рестартиране и неговия интервал и също контрол над процеса.
emergency_restart_threshold 10
emergency_restart_interval 1m
process_control_timeout 10s
Трети съвет – Конфигурация на пуловете
Следният пример показва промяна на файловете към три различни части на сайт:
/etc/php-fpm.d/site.conf
/etc/php-fpm.d/blog.conf
/etc/php-fpm.d/forums.conf
Конфигурация за всеки пул:
[site]
listen = 127.0.0.1:9000
user = site
group = site
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slowlog-site.log
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 5
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200
listen.backlog = -1
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp[blog]
listen = 127.0.0.1:9001
user = blog
group = blog
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slowlog-blog.log
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 4
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
pm.max_requests = 200
listen.backlog = -1
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp[forums]
listen = 127.0.0.1:9002
user = forums
group = forums
request_slowlog_timeout = 5s
slowlog = /var/log/php-fpm/slowlog-forums.log
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 400
listen.backlog = -1
pm.status_path = /status
request_terminate_timeout = 120s
rlimit_files = 131072
rlimit_core = unlimited
catch_workers_output = yes
env[HOSTNAME] = $HOSTNAME
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp
Четвърти съвет – Pool Process Manager (pm) конфигурация
Използвайте динамично управление на процесите, по този начин различните процеси ще стартират само, когато са нужни. Стилът на конфигурацията е подобен на този на Nginx с някои много малки различия.
Също така трябва да тествате сървъра си, за да видите колко процеси може да поеме наведнъж, защото сървърът може да не може да поеме всички процеси, които искате да стартирате.
Ето пример на конфигурацията:
pm.max_children = 9
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 200
Това е за сега, приятели. Надяваме се, че това ви е било полезно. Ако знаете други съвети, чувствайте се свободни да оставите коментар за тях.


