windows服务开发 nginx+php Curl请求卡死的问题

5 篇文章 0 订阅
2 篇文章 0 订阅

    接手的新项目, 使用 Laravel 框架 ,有一个接口请求控制器使用的是 Guzzle HTTP客户端请求组件,开始用的时候,发现一直处于卡死, 直到 nginx 返回 504 Time Out ,并且请求的本地 api 服务器, 也没有请求日志,api 是可以确保在正常运行的。同时,线上的 api 地址就可以正常请求。所以,可以判断出代码是正常的,同时请求没有发出。 

    一开始以为是 这个组件的问题导致请求没有发出, 还去 gayhub 提 Issues , 结果被告知不是 Guzzle 的问题, 就被 close 掉了。 后来,隔了几天作者给我分析了一波,已下是原话。  第一次,没看明白这个功能也不是特别急,也就闲置了。    

The returned response indicates that your server responded, this the request itself is successful。 The response code indicates that something went wrong on server side (most probably your nginx server couldn’t connect to php-fpm)。 The fact that it works locally is irrelevant in this case as the problem is on the server side。

    现在,又要解决这个问题的时候, 想着把情况具体在说明一下,请教一下有么有办法解决,但是,这个时候我又看到他括号里的话 (most probably your nginx server couldn’t connect to php-fpm) 。所以,我就怀疑是不是 nginx的配置问题。

    

    由于,本人对 nginx 也不是特别熟悉。随即, 去 Google 了一下 nginx 和 php 的组合配置, 发现 Windows 环境下 nginx + php ,不支持并发。也就是,当本地配置了多个域名,并且同时指向你本地服务请求的时候,就不支持了。

 

    于是一个解决办法就是 修改 fastcgi_pass=127.0.0.1:9000 的配置, 这个配置 表示 nginx 会通过 fastcgi_pass 将请求的资源发给 127.0.0.1:9000 进行解析。 

    我这里有两个服务,所以分别配置成不同的端口号如,然后保存重启 nginx。 

fastcgi_pass = 127.0.0.1:9000
fastcgi_pass  = 127.0.0.1:9001

 

   在同时,在 cmd 下开启多个 php-cgi 指向 php.ini 进行监听。

你的php目录/php-cgi.exe -b 127.0.0.1:9000 -c 你的php目录/php.ini
你的php目录/php-cgi.exe -b 127.0.0.1:9001 -c 你的php目录/php.ini

    然后, 就能完美的解决问题了。

    这种问题也是因为,自身对 nginx 和 php 的配置不够熟悉。。

    在以后还是要多多学习!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值