Съвети и трикове за конфигурация и оптимизация на Nginx и PHP-FPM

Banko Stoyanov03.05.20154min0
NGINX-hosting.jpg

NGINX hostingТази статия е част от нашата серия „Съвети и трикове“. За да избегнем объркване разделихме статията на две части. Първата е за 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

Това е за сега, приятели. Надяваме се, че това ви е било полезно. Ако знаете други съвети, чувствайте се свободни да оставите коментар за тях.

Banko Stoyanov

This blogpost is written by Banko Stoyanov. Stoyanov is a Marketing manager at CooliceHost. Stoyanov holds an MBA in Marketing strategy and Business developing. He's passionate about data analysis, consumer behavior, cloud technology, and marketing. He is a lifelong learner who regularly keeps himself updated with the latest technologies and industry advancements. In his free time, he explores coffee scene and stays active through running and fitness. Find him on Linkedin and Facebook.


Оставете отговор

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са маркирани с *


Copyright © 2026 – CooliceHost.com – Всички права запазени.