windows下nginx+php
nginx能够为Web服务器节省资源,相较于我们熟悉的apache、IIS的优势,在于“反向代理”和“负载均衡”。那在windows下如何来配置nginx+php环境呢?
nginx版本:nginx-1.13.12 php版本:php7.0.10(这里直接使用wamp下的php)
1.首先需要配置php.ini,让php能够与nginx结合
//找到以下配置项 ;cgi.fix_pathinfo=1 //去掉分号 cgi.fix_pathinfo=1
这是php的CGI的配置,它是用来对设置cgi模式下为php是否提供绝对路径信息或PATH_INFO信息。没有这个参数之前PHP设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME,没有PATH_INFO值。设置这个参数为cgi.fix_pathinfo=1后,cgi设置完整的路径信息
PATH_TRANSLATED的值为SCRIPT_FILENAME,并且设置PATH_INFO信息;如果设为cgi.fix_pathinfo=0,则只设置绝对路径PATH_TRANSLATED的值为SCRIPT_FILENAME。cgi.fix_pathinfo的默认值是1。
nginx默认是不会设置PATH_INFO环境变量的的值,需要php使用cgi.fix_pathinfo=1来完成路径信息的获取,但同时会带来安全隐患。
2.配置nginx.conf
//找到以下项 location / { root html; index index.html index.htm; }
//将root html;改成root F:/wwww; //设置站点根目录 location / { root F:/wwww; index index.html index.htm; }
//再找到以下注释 #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; #}
//去掉前面的“#”,同样将root html;改为root F:/wwww;。再把/scripts改为“$document_root”,这里的“$document_root”就是指前面“root”所指的站点路径 location ~ \.php$ { root F:/wwww; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
3.运行php和nginx
以fastCGI的方式运行php
运行nginx
打开任务管理器,查看进程会发现多了nginx和php-cgi,此时服务就正常运转了
4.此时在站点目录,即最开始设置的F:/wwww; 目录下新建一个index.php的文件
<?php phpinfo();
打开浏览器输入“http://localhost/index.php”, 如果出现
那么这个最基本的windos的nginx+php已经搭好了。
为了方便开启关闭,可以使用RunHiddenConsole.exe,RunHiddenConsole.exe的作用是在执行完命令行脚本后可以自动关闭脚本,而从脚本中开启的进程不被关闭。下载RunHiddenConsole.zip包解压到nginx目录内。
开启脚本nginx_start.bat
@echo off REM Windows 下无效 REM set PHP_FCGI_CHILDREN=5 REM 每个进程处理的最大请求数,或设置为 Windows 环境变量 set PHP_FCGI_MAX_REQUESTS=1000 echo Starting PHP FastCGI... RunHiddenConsole E:\wamp\bin\php\php7.0.10\php-cgi.exe -b 127.0.0.1:9000 -c E:\wamp\bin\php\php7.0.10\php.ini echo Starting nginx... RunHiddenConsole E:\nginx\nginx.exe -p E:\nginx
关闭脚本nginx_stop.bat
@echo off echo Stopping nginx... taskkill /F /IM nginx.exe > nul echo Stopping PHP FastCGI... taskkill /F /IM php-cgi.exe > nul exit
制作好后
双击nginx_start.bat开启,nginx_stop.bat关闭。