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

2018-09-0313:20:09来源:伟大de虫子 评论 1,982 views

重装了一台阿里云,系统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文件:百度网盘

  运行效果图:

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: