真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)

真 · nginx配置php文件解析(PATH_INFO支持与index.php隐藏)

nginx默认配置文件中对php的支持是这样的:

nginx对php的处理原则是将匹配到的以.php结尾的文件转交给FastCGI服务进程(FastCGI是一种协议,php-fpm是实现了FastCGI协议的程序)。

但只启用这个配置是不够的,首先,他无法处理PATH_INFO信息。即在php文件中使用全局变量$_SERVER[‘PATH_INFO’]只能得到空值。另外,他只能处理http://domain/index.php/controller/action?query_string这样的url,无法隐藏index.php。对于现在的web框架来说,将index.php文件作为php的单一入口,并在url上隐藏index.php是最基本的要求。有些框架还可能需要用到PATH_INFO来实现路由转发。

网上有好多资料讲怎么配置nginx来实现PATH_INFO支持与index.php隐藏的,但试了好多都是不完善的,要么支持了$_SERVER[‘PATH_INFO’]但不支持隐藏index.php,要么是无法获取$_SERVER[‘QUERY_STRING’]。就连我去年一直用到现在的配置其实也是有问题的。

今天试了好久,总算确定了一个最合理的配置:

当然你也可以将后面两句fastcig_param写到/etc/nginx/fastcig_params文件中。

参考:

https://www.nginx.com/resources/wiki/start/topics/examples/phpfcgi/

发表评论

电子邮件地址不会被公开。 必填项已用*标注