Win+Nginx+IIS+xxfpm(服务版)+nginx代理到IIS的配置及工具

重装了一台阿里云,系统win2008,为了方便,直接使用云镜像里的安装包,简介写得很牛B,如何强大如何便于管理,结果装完发现php-cgi.exe会在响应一定请求数自动挂起,这个几万年前就存在的bug居然没有解决就敢发包分享,还收费,真是什么鸟人都有!


经过一番摸索,完美解决windows下php-cgi.exe的挂起问题,经过JMeter的压力测试,不会出现退出、挂起现象。


  所以本文要解决的问题是:

  1、php-cgi.exe自动退出
  2、如何将xxfpm设置成系统服务,随系统重启
  3、如何IIS+Nginx共存的时候,80端口共享


第一步:windows下安装Nginx,Mysql,PHP

  本步骤过于简单,就跳过了,如果连这个也不会,建议到全中国最牛X的技术资料平台【百度】搜索“nginx+php”

  mysql的安装就是next、next、next的问题,也不说了。

  后面的步骤才是本文的重点!


第二步:让php-cgi.exe受xxfpm守护,而xxfpm随系统启用,达到后台运行的效果

  网上很多文章介绍用什么应用隐藏工具,还有写什么bat手工运行的,我就不吐槽了。

  (1)你需要下载xxfpm.exe,把它放在PHP目录下;

  (2)再下载【命令调用工具】winserv.exe,也放在PHP目录下,我们将它注册成系统服务,通过它去执行xxfpm.exe

  (3)编写如下的批处理文件install.bat,目的是将winserv.exe注册成系统服务:

@echo off
if not ""%1"" == ""INSTALL"" goto remove
"C:/nginx/php\winserv.exe" install "nginxPHP-CGI" -start auto "C:/nginx/php\php-cgi.exe" -b 127.0.0.1:9000 -c "C:/nginx/php\php.ini"
net start nginxPHP-CGI > NUL

goto end

:remove
net stop nginxPHP-CGI > NUL
"C:/nginx/php\winserv.exe" uninstall "nginxPHP-CGI"

:end
exit
  可以直接copy上面代码,改名install.bat,执行即可。当然上面的目录路径要修改成你的。这步操作完,php-cgi.exe会随winserv.exe的启动而启动,但还没完,因为这时候的php-cgi.exe很脆弱,500个请求就会down掉。

  (4)在【运行】里输入regedit.exe,找到[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\nginxPHP-CGI],即刚才注册的服务键值,如下图:


  把CommandLine的值修改为:

C:\nginx\php\xxfpm.exe "C:/nginx/php/php-cgi.exe -c C:/nginx/php/php.ini" -n 5 -i 127.0.0.1 -p 9000
  注意修改成自己的目录。上面的命令就是通过xxfpm.exe去 管理php-cgi.exe 进程,-n 5是打开5个进程,可以自行修改。
  (5)大功告成!无弹出窗,无界面。工具包在文章后面提供下载。


第三步:把IIS站点中解析的域名,通过Nginx反向代理给IIS,实现80端口共享

  比如IIS中,有两个站点,域名端口分别设置如下:

  www.123.com : 8002,www.abc.com:8003

  (1)打开Nginx的配置文件nginx.conf,加入如下代码:

server {
	listen 80;
	server_name www.123.com;

	#代理规则配置
	location / {
		root "/";
		proxy_pass http://www.123.com:8002;
	}

}
server {
	listen 80;
	server_name www.abc.com;

	#代理规则配置
	location / {
		root "/";
		proxy_pass http://www.abc.com:8003;
	}

}
 
  

 
  


  搞定,然后你访问www.123.com 的时候,并不会显示端口号,IIS会负责解决asp/.net的运行,Nginx负责PHP的工作,各斯其职。

  这样就完美解决windows下php-cgi经常自动死掉、xxfpm运行不方便、IIS+Nginx的端口兼容问题了。

  附上所有工具包、bat文件:百度网盘


  运行效果图:


Win+Nginx+IIS+xxfpm(服务版)+nginx代理到IIS的配置及工具_第1张图片


你可能感兴趣的:(PHP,Nginx,IIS)