windos nginx curl 超时

本文探讨了Windows环境下使用Nginx与FastCGI时遇到的问题及解决方案,特别是针对多项目共存时端口冲突导致的访问超时现象,并介绍了Nginx的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:windows 系统下 curl 当前windows下面的其他项目就会发生超时,卡死的现象,只有当timeout过后 服务器才会恢复正常

可能引起的结果: nginx的vhosts 大量配置  fastcgi_pass   127.0.0.1:9000;  或者配置了  fastcgi_pass   127.0.0.1:9001/9002 不存在的端口

结论:经过查询资料得出的结论是在nginx中,请求都是keep-alive的,就是当我项目A操作test.php系统时,通过nginx进入socket进入A后进行解析,使用9000端口,这时使用curl访问项目B的index.php文件时(项目也使用了  fastcgi_pass   127.0.0.1:9000 端口),那么会造成端口被占用,访问超时。


图1

解决:vhosts大量配置的fastcgi_pass   端口不重复 , 比如分别使用9000~9003(默认不自动启动)

编写BAT文件,内容为:

@echo off  
start cmd /k "C:\phpStudy\php56n\php-cgi.exe -b 127.0.0.1:9001 -c C:\phpStudy\php56n\php.ini"  
start cmd /k "C:\phpStudy\php56n\php-cgi.exe -b 127.0.0.1:9002 -c C:\phpStudy\php56n\php.ini"  

每次重启后都需要启动一下bat文件, 有点麻烦。。有更好的办法可以建议一下 微笑



#注:nginx介绍

1.介绍  Nginx 

    高性能web server,这个不用多说了,大家都知道。
    FastCGI程序 - 常驻型CGI程序,它是语言无关的、可伸缩架构的CGI开放扩展,其主要行为是将CGI解释器进程保持在内存中并因此获得较高的性能。
    Nginx要调用FastCGI程序,需要用到FastCGI进程管理程序(因为nginx不能直接执行外部的cgi程序,我们可使用lighttpd中的spawn-fastcgi来让nginx可支持外部cgi运行。也有其他方法安装nginx-fcgi来让nginx支持cgi,这里是使用spawn-fastcgi的方法),来达到调用FastCGI程序的目的。Nginx本身没有集成类似的模块,而Apache具备该功能模块,所以不需要额外安装FastCGI进程管理程序。


2.工作原理
    Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。FastCGI接口在Linux下是socket(这个socket可以是文件socket,也可以是ip socket)。为了调用CGI程序,还需要一个FastCGI的wrapper(wrapper可以理解为用于启动另一个程序的程序),这个wrapper绑定在某个固定socket上,如端口或者文件socket。
    当Nginx将CGI请求发送给这个socket的时候,通过FastCGI接口,wrapper接收到请求,然后派生出一个新的线程,这个线程调用解释器或者外部程序处理脚本并读取返回数据;接着,wrapper再将返回的数据通过FastCGI接口,沿着固定的socket传递给Nginx;最后,Nginx将返回的数据发送给客户端。这就是Nginx+FastCGI的整个运作过程,如图1所示。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值