我和NGINX有一个混乱让我疯了。我在VirtualBox上有Ubuntu 12.04.3 LTS。我按照这些说明安装了NGINX-MYSQL-PHP:
然后我在 / etc / nginx / sites-available / default 中设置:
location ~ \.php$ {
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
localhost 和 info.php 都正确执行。现在我想建立一个本地网站,并尝试进行一些重定向。所以我在 / usr / share / nginx / www 中创建了一个名为 mywebsite 的新文件夹,在 index.php 里面放了一个echo指令,我重定向的PHP脚本,在 sites-available 中添加了一个新的配置文件,并在 sites-enabled 中添加了一个链接,并禁用了 application / octet- nginx.conf 中的流,以避免下载脚本文件。所以我将我的新配置文件设置如下:
server {
listen 80;
root /usr/share/nginx/www/mysite;
index index.php index.html index.htm;
server_name www.mysite.com;
location / {
try_files $uri $uri/ /index.html;
if (!-e $request_filename){
rewrite ^/location/([0-9]+)/device/([0-9]+)/senseddata/$ /senseddata.php break;
rewrite ^/location/([0-9]+)/device/([0-9]+)/senseddata/lasthour/$ /senseddata.php break;
rewrite ^/location/([0-9]+)/device/([0-9]+)/senseddata/daily/$ /senseddata.php break;
}
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/www;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
try_files $uri =404;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
}
那么究竟发生了什么? Index.php正确执行。重写很好但脚本没有执行。我只看到我在浏览器中显示的整个代码。有什么问题?提前谢谢。
答案 0 :(得分:0)
尝试将fastcgi_split_path_info ^(.+\.php)(/.+)$;
添加到location ~ \.php$
并重新启动nginx。
我的配置示例
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
try_files $uri =404;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
答案 1 :(得分:0)
同时检查PHP文件中的开始标记。如果您使用<?
代替<?php
并且short tag不可用,则不会解析PHP代码,您将看到源代码。