Windows下Nginx支持php的步骤

时间:2024-04-17 08:00:28

转自:http://my.oschina.net/zhxm/blog/59602

 

1、下载Nginx,http://nginx.org/ 我下载的是nginx/Windows-1.2.0版本

下载完Nginx后,需要在Windows中安装Nginx,Nginx Windows版本的安装非常方便,只要解压缩后,将文件拷贝到C盘根目录下即可,我的Nginx安装目录为D:\nginx

2、我使用的是PHP5.2.4,你可以使用PHP5.3,只要PHP版本支持FastCgi方式(有php-cgi.exe)即可

配置Nginx支持运行PHP

首先需要打开D:\nginx,找到D:\nginx\conf目录下的nginx.conf,以记事本打开,

配置Nginx支持PHP第一步

设定error.log的存放目录,将#error_log logs/error.log;的#去处,默认error.log是存放在Nginx安装目录中logs目录下。

配置Nginx支持PHP第二步

设定WEB服务器目录,类似于PHP.INI配置文件中的document_root,Nginx配置文件中的原有信息如下

location / {

root html;

index index.html index.htm;

}

修改Nginx配置如下

location / {

root D:/phpweb;

index index.php index.html index.htm;

}

这里需要注意,路径分隔符请使用”/”而不要使用Windows中的”\”以防歧义。

配置Nginx支持PHP第三步

在Nginx配置文件中找到

#location ~ \.php$ {

# root html;

# fastcgi_pass 127.0.0.1:9000;

# fastcgi_index index.php;

# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

# include fastcgi_params;

#

#}

去处#并添加WEB目录,即

location ~ \.php$ {

root D:/phpweb;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME D:/phpweb$fastcgi_script_name;

include fastcgi_params;

}

这里需要注意,需要将

fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;

中的/scripts修改为之前设定的WEB目录,否则会报HTTP 404错误。

配置Nginx支持PHP第三步

修改PHP.INI配置文件中的cgi.fix_pathinfo = 1,PHP 会修正 SCRIPT_FILENAME 为真实的文件地址,否则 PHP 将无法找到需要处理的 PHP 文件。

至此,Nginx支持运行PHP的基础配置工作就好了。

接下来我们需要启动PHP FastCgi和Nginx服务以便运行PHP程序,方法如下

1、首先下载RunHiddenConsole.exe复制到C:\Windows

2、启动PHP FastCgi,在CMD模式下输入

RunHiddenConsole D:/php5/php-cgi.exe -b 127.0.0.1:9000 -c C:/windows/php.ini

注意你的PHP安装目录,以及php.ini配置文件所在的位置

3、启动Nginx服务,即在CMD模式下输入D:/nginx/nginx.exe

至此Windows下配置Nginx以支持运行PHP的基础配置方法就完成了,你可以通过phpinfo函数查看到此时运行PHP的WEB服务器变成了Nginx。

另外两个执行文件

start_nginx.bat

@echo off

echo Starting PHP FastCGI...

RunHiddenConsole D:/php5/php-cgi.exe -b 127.0.0.1:9000 -c C:/Windows/php.ini

echo Starting nginx...

RunHiddenConsole D:/nginx/nginx.exe

Exit

stop_nginx.bat

@echo off

echo Stopping nginx...

taskkill /F /IM nginx.exe > nul

echo Stopping PHP FastCGI...

taskkill /F /IM php-cgi.exe > nul

exit

Discuz! X2 配置URL伪静态Rewrite规则

rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;

rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;

rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%

3D$4&page=$3 last;

rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;

rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;

rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;

if (!-e $request_filename) {

return 404;

}