Nginx 版本 1.10.2nginx
PHP 版本 7.0.12网络
Node 版本 5.9.0php-fpm
本文是想讲一个 Nginx 的错误,为啥还要说起 PHP 和 Node 的版本呢?容我先还原一下应用场景代理
首先就是我有一个绑定在 3000 端口的 Node Servercode
我须要从 80 端口直接访问这个服务,因此我使用了 Nginx 的反向代理rem
而至于 PHP ,其实这个错误就是与它有关get
当我使用这个 Node Server 的时候,返回了一个 502 Bad Gateway 错误io
查看网络请求,也没有什么错误,接着就查看了 Nginx error log 里的错误信息反向代理
[error] 17028#0: *111 upstream prematurely closed connection while reading response header from upstream
好吧,并非什么明显的错误提示,只好到 Google 查查看了
查了一番彷佛也挺多人遇到这个问题的,可是解决问题的方法好像都不同。。。
有的说是 keepalive_timeout 值过小了 (这个值我根据服务配置,已经改为 600,感受不太可能),还有说重启 Nginx 就好了 (尝试过。),等等。。。
固然也有让我眼前一亮的答案,那就是 重启 php-fpm ,果断尝试一下
果真。。。启动报错了,提示大概意思是端口被占用了,瞬间感受好像找对了突破口
看了一下端口才发现,原来是以前已经开启了另一个 Node Server 占用了 php-fpm 默认的 9000 端口
简直是本身坑本身!
由于服务的端口不能改,要和其它同事的统一,因此我把 php-fpm 的端口改为了 9999
PHP 是使用 brew 安装的,配置路径为: /usr/local/etc/php/7.0/php-fpm.d/www.conf
listen = 127.0.0.1:9999
而后重启 php-fpm 就 OK 了