15.4. Конфигурирование Nginx для использования php
Внести изменения в файл конфигурации
/etc/nginx/sites-available.d/test.alt.conf
:
server {
listen *:80;
# can't use wildcards in first server_name
server_name test.alt www.test.alt;
index index.php;
root /var/www/test.alt;
location / {
try_files $uri =404;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php8.2-fpm/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME /var/www/test.alt/$fastcgi_script_name;
}
access_log /var/log/nginx/test.alt-access.log;
}
Описание директив из файла конфигурации:
listen
— задаёт адрес и порт, на которых сервер будет принимать запросы. Можно указать адрес и порт, либо только адрес или только порт;
root
— определяет корневой каталог, в котором хранятся файлы, обслуживаемые данным веб-сайтом;
index
— определяет файлы, которые будут использоваться в качестве индекса. В имени файла можно использовать переменные. Наличие файлов проверяется в порядке их перечисления;
server_name
— определяет имя виртуального сервера (в этой директиве необходимо указать доменное имя сервера или общедоступный IP-адрес);
location /
— первый блок location включает директиву try_files
, которая проверяет наличие файлов или каталогов, соответствующих запросу URI. Если Nginx не может найти подходящий ресурс, он вернет ошибку 404;
location ~ \.php$
— этот блок location включает фактическую обработку PHP, указывая Nginx на файл конфигурации fastcgi-php.conf и файл php8.2-fpm.sock, который объявляет, какой сокет связан с php-fpm;
location ~ /\.ht
— этот блок location имеет дело с файлами .htaccess
, которые Nginx не обрабатывает. При добавлении директивы deny all
, если какие-либо файлы .htaccess
попадут в корень документа, они не будут показываться посетителям.
Проверить конфигурацию на наличие синтаксических ошибок, можно выполнив команду:
# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Если ошибки отсутствуют, необходимо перезагрузить Nginx, чтобы применить изменения:
# systemctl reload nginx.service
Для проверки того что Nginx правильно передаёт файлы .php PHP-процессору можно создать тестовый файл
/var/www/test.alt/test.php
со следующим содержимым:
<?php phpinfo(); ?>
При открытии этого файла по URL http://test.alt/test.php
будет доступна информация о PHP:
После проверки информации о PHP-сервере лучше всего удалить созданный файл, поскольку он содержит информацию о среде PHP и сервере:
# rm /var/www/test.alt/test.php