Product SiteDocumentation Site

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:
LEMP. Информация о PHP
После проверки информации о PHP-сервере лучше всего удалить созданный файл, поскольку он содержит информацию о среде PHP и сервере:
# rm /var/www/test.alt/test.php