+ -
当前位置:首页 → 问答吧 → nginx上迄今为止较为完美的PHP支持配置文件

nginx上迄今为止较为完美的PHP支持配置文件

时间:2010-08-11

来源:互联网

本帖最后由 hightman 于 2010-08-11 16:13 编辑

由于某些原因,开始考虑nginx来作为一部分WEB服务器,而 nginx 对于 PHP的支持由于内在原理只能通过FASTCGI的方式,而 NGINX 本身的各种模块也都基于 location  等规则指令。

最典型的 php 配置(包括官方推荐的各种配置说明书)都是检测URL是否以 .php 结尾,而当需要支持PATH_INFO时则只是简单检测URL中是否包含 .php 。

这个做法最明显的缺陷是当存在包含.php的目录时,访问该目录或目录下的相关文件都会不正确,很多朋友的解决办法就是避免出现这样的目录。现提供一个完美也安全的配置供参考(不会出现80SEC中提到的所谓严重BUG)
  1. ## PHP scripts support
  2. location ~ \.php$ {
  3.         if (-d $request_filename) {
  4.                 rewrite ^   $uri/ redirect;
  5.         }
  6.         if (!-f $request_filename) {
  7.                 return 404;
  8.         }
  9.         include fastcgi.conf;
  10. }

  11. ## PHP with pathinfo
  12. location ~ \.php/ {
  13.         try_files $uri $uri/ @fastcgi;
  14. }

  15. ## FastCGI handler
  16. location @fastcgi {
  17.         fastcgi_split_path_info ^(.+?\.php)(/.*)$;
  18.         if (!-f $document_root$fastcgi_script_name) {
  19.                 return 404;
  20.         }
  21.         include fastcgi.conf;
  22. }
复制代码
其中 fastcgi.conf 懂 nginx 的应该都懂的,无非是一些 fastcgi_param 的指定,这里就不贴了。

附,如果不需要PATHINFO支持其实只要第一段就够了,也不用这么复杂了。

作者: hightman   发布时间: 2010-08-11

学习了~

作者: HH106   发布时间: 2010-08-11

nginx 好安装不。有机会一定尝试一下。都用APACHE了。

作者: renxiao2003   发布时间: 2010-08-11