windows下nginx+php

  nginx能够为Web服务器节省资源,相较于我们熟悉的apacheIIS的优势,在于反向代理“负载均衡那在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关闭。

posted @ 2018-04-22 00:44  迹忆  阅读(204)  评论(0编辑  收藏  举报