nginx error: upstream prematurely closed connection while reading response header from upstream

本篇文章由:http://xinpure.com/nginx-error-upstream-prematurely-closed-connection-while-reading-response-header-from-upstream/php

環境描述

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 了

相關文章
相關標籤/搜索