Я использую nginx в качестве обратного прокси для PHP с PHP-FPM. Я использую следующую конфигурацию:
server {
listen 80;
root /var/www/html;
index index.php;
error_page 403 /error-403;
error_page 404 /error-404;
location ~ \.php$ {
if ($http_x_forwarded_proto = 'https') {
set $fe_https 'on';
}
try_files $uri =400;
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param HTTPS $fe_https;
fastcgi_pass php:9000;
}
}
Я использую директиву try_files
, , как рекомендовано , для предотвращения неконтролируемых запросов к PHP.
Однако после некоторого тестирования try_files
, похоже, ничего не делает. Если я запрашиваю URL с несуществующим .php-файлом (например, /no-file.php
), я получаю ошибку 404 от PHP. Вместо этого я бы ожидал ошибку 400 от nginx.
Я что-то упустил? try_files
, похоже, ничего не делает.