Настройка конфигурации NGINX + PHP-FPM 7.4 на Ubuntu 22.04 + Fastpanel
Добрый день.
Поднимаю сервер VDS для MODX 2.8.4. Ubuntu 22.04 + Fastpanel. Связка NGINX + PHP-FPM 7.4. Стандартную настройку конфигов сделал такую:
UPD Добавлены редиректы в конфиг и привязан сертификат Let's Encrypt, созданный через панель
Frontend
BackEnd
Я не специалист по настройке серверов, и, возможно, что-то сделал неправильно. Поэтому не претендую на раздел готовых решений. Буду благодарен за конструктивную критику, и если поможете с исправлением ошибок или дополнениями.
Поднимаю сервер VDS для MODX 2.8.4. Ubuntu 22.04 + Fastpanel. Связка NGINX + PHP-FPM 7.4. Стандартную настройку конфигов сделал такую:
UPD Добавлены редиректы в конфиг и привязан сертификат Let's Encrypt, созданный через панель
server {
listen 10.10.10.10:80;
server_name my-site.ru www.my-site.ru; // Тут и далее необходимо заменить my-site.ru на ваш домен
return 301 https://$host$request_uri;
}
server {
server_name my-site.ru www.my-site.ru;
listen 10.10.10.10:443 ssl;
ssl_certificate /var/www/httpd-cert/my-site.ru_2023-02-13-01-35_39.crt;
ssl_certificate_key /var/www/httpd-cert/my-site.ru_2023-02-13-01-35_39.key;
charset utf-8;
gzip on;
gzip_min_length 1000;
gzip_proxied any;
gzip_types text/plain application/xml application/x-javascript text/javascript text/css text/json;
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
gzip_comp_level 5;
set $root_path /var/www/my_site_user/data/www/my-site.ru; // Тут и далее my_site_user необходимо заменить на ваше имя пользователя
root $root_path;
index index.html index.htm index.php;
disable_symlinks if_not_owner from=$root_path;
# Редирект со всех www доменов на адрес без www
if ($host ~ "^www\.(.*)$") {
return 301 $scheme://$1$request_uri;
}
# Редирект с index.php на корень сайта:
if ($request_uri ~* "^(.*/)index\.php$") {
return 301 $1;
}
# Запрет для всех для при обращении к ядру MODx из браузера
location ~ ^/core/.* {
deny all;
return 403;
}
location / {
try_files $uri $uri/ @rewrite;
}
location @rewrite {
rewrite ^/(.*)$ /index.php?q=$1;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/my-site.ru.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
location ~* ^.+\.(jpg|jpeg|gif|png|svg|js|css|mp3|ogg|mpeg|avi|zip|gz|bz2|rar|swf|ico|7z|doc|docx|map|ogg|otf|pdf|tff|tif|txt|wav|webp|woff|woff2|xls|xlsx|xml)$ {
try_files $uri @rewrite;
access_log off;
expires 10d;
break;
}
location @fallback {
fastcgi_pass unix:/var/run/my-site.ru.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
include "/etc/nginx/fastpanel2-sites/my_site_user/my-site.ru.includes";
include /etc/nginx/fastpanel2-includes/*.conf;
error_log /var/www/my_site_user/data/logs/my-site.ru-frontend.error.log;
access_log /var/www/my_site_user/data/logs/my-site.ru-frontend.access.log;
}
BackEnd
[my-site.ru]
user = my_site_user
group = my_site_user
listen = /var/run/my-site.ru.sock
listen.owner = my_site_user
listen.group = www-data
listen.mode = 0666
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 4
pm.max_requests = 1000
php_admin_value[date.timezone] = "Europe/Moscow"
php_admin_value[open_basedir] = "/var/www/my_site_user/data"
php_admin_value[display_errors] = "off"
php_admin_value[log_errors] = "On"
php_admin_value[mail.add_x_header] = "On"
php_admin_value[max_execution_time] = "120"
php_admin_value[max_input_vars] = "10000"
php_admin_value[opcache.blacklist_filename] = "/opt/opcache-blacklists/opcache-*.blacklist"
php_admin_value[opcache.max_accelerated_files] = "100000"
php_admin_value[output_buffering] = "4096"
php_admin_value[post_max_size] = "512M"
php_admin_value[sendmail_path] = "/usr/sbin/sendmail -t -i -f 'my-site.ru@yandex.ru'"
php_admin_value[session.save_path] = "/var/www/my_site_user/data/tmp"
php_admin_value[short_open_tag] = "On"
php_admin_value[upload_max_filesize] = "512M"
php_admin_value[memory_limit] = "512M"
php_admin_value[cgi.fix_pathinfo] = "0"
php_admin_value[session.gc_probability] = "1"
php_admin_value[session.gc_divisor] = "100"
php_admin_value[session.gc_maxlifetime] = "28800"
php_admin_value[upload_tmp_dir] = "/var/www/my_site_user/data/tmp"
php_admin_value[error_log] = "/var/www/my_site_user/logs/php_errors.log"
catch_workers_output = no
access.format = "%{REMOTE_ADDR}e - [%t] \"%m %r%Q%q %{SERVER_PROTOCOL}e\" %s %{kilo}M \"%{HTTP_REFERER}e\" \"%{HTTP_USER_AGENT}e\""
access.log = /var/www/my_site_user/data/logs/my-site.ru-backend.access.log
Я не специалист по настройке серверов, и, возможно, что-то сделал неправильно. Поэтому не претендую на раздел готовых решений. Буду благодарен за конструктивную критику, и если поможете с исправлением ошибок или дополнениями.