如上所述,uri没有被传递给nginx。 我已经包括了整个“尝试”块来显示这个。
location / { # First attempt to serve request as file, then # as directory, then fall back to displaying a 404. set $page_to_view "/index.php"; try_files $uri $uri.php $uri/; # Uncomment to enable naxsi on this location # include /etc/nginx/naxsi.rules }
所以它本质上是说:“噢,我们做了$ uri.php文件存在,让我们服务器,而不是实际发送到PHP。
我的fpm部分在下面。
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # # With php5-fpm: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include fastcgi_params; }
非常多的股票。 所以我没有得到的是为什么在这个世界上nginx不再这样做了。 我知道它是在debian下使用fastcgi,但现在不是,我因为硬盘崩溃而丢失了旧的configuration文件,这是我发送驱动器之前没有备份的文件,因为我认为它会是完全可以重写它。
你不会说你要加载什么URI,但是我会假设它不会以.php 。
这里的问题是,你没有像名字所暗示的那样直接从try_files指令中获取。 这是专门尝试一个文件。 它被logging为try_files file ... uri; 这意味着只有最后一个参数将被视为回退导致内部重写。 最后一个参数之前的任何参数都会作为静态文件进行testing,如果find则作为静态文件提供。
这意味着你可以做try_files $uri $uri/ $uri.php; 但你不能做try_files $uri $uri.php $uri/
尝试更换
location ~ \.php$ {
同
location ~ \.php {
和$ document_root与实际目录在哪里放置php文件
例如。
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;