我使用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
指令as recommended来防止对PHP的不受控制的请求。
但是,经过一些测试后,try_files
似乎没有做任何事情。如果我请求带有不存在的.php文件的URL(如/no-file.php
),我会从PHP收到404错误。相反,我预计nginx会出现400错误。
我错过了什么吗? try_files
似乎没有做任何事情。
答案 0 :(得分:0)
我发现了问题所在。问题是由if
子句引起的:
if ($http_x_forwarded_proto = 'https') {
set $fe_https 'on';
}
我不确定原因,但删除它会使try_files
正常工作。