程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 記一次nginx部署yii2項目時502 bad gatewary錯誤的排查,nginxyii2

記一次nginx部署yii2項目時502 bad gatewary錯誤的排查,nginxyii2

編輯:關於PHP編程

記一次nginx部署yii2項目時502 bad gatewary錯誤的排查,nginxyii2


周六閒來無事,就試著安裝和部署下yii2,安裝過程沒什麼問題,但部署到nginx上時遇到了502 bad gatewary問題,折騰了半天才搞定。這個問題是我以前在部署yii2時沒有遇到過的,因此記在這裡以備忘。

1,安裝和部署環境

操作系統:macOS,php版本:5.6,nginx版本:1.10.1,yii2版本:2.0。

2,yii2的安裝

yii2的安裝很簡單,參考官網的手冊即可。我這裡安裝的是yii2-app-advanced(Yii 2 Advanced Project Template),項目地址在github上,按照README中的安裝說明一步一步來就行,這個就不多說了。

3,yii2在nginx上的部署

其實yii2-app-advanced項目README中對於如何部署在nginx上已經說的很清楚了,按照步驟來應該不會有什麼問題。但是我部署時偷了個懶,直接把README中nginx的部署參數拿來用了,結果才導致了502 bad gateway的錯誤。

HTTP狀態碼中5打頭的響應代碼都是由於服務器端引起的,所以看下nginx的日志:

error log:

看到upstream: "fastcgi: //127.0.0.1:9090"這裡,端口好像不對,於是查看下虛擬主機的配置:

 再看下php-fpm的配置:

果然,是nginx虛擬主機指定的FastCGI服務器監聽端口錯了,這樣就會導致nginx沒有得到FastCGI服務器的響應。所以浏覽器發出請求時,nginx給浏覽器返回一個502的狀態碼,告訴浏覽器上游的FastCGI服務器沒有響應。

4,解決

在nginx的虛擬主機中,把fastcgi_pass指定的端口修改正確,這個錯誤就解決了。

5,總結

(1)HTTP狀態碼5打頭的錯誤是由服務器端引起的,502 bad gateway則是由於作為網關或者代理工作的服務器(web服務器)嘗試執行請求時,從上游服務器(fastcgi服務器)接收到無效的響應。

(2)fastcgi_pass是ngx_http_fastcgi_module模塊的一個配置指令,它指定了fastcgi服務器的地址,nginx文檔中對於它的描述如下:

 1 Syntax:    fastcgi_pass address;
 2 Default:    —
 3 Context:    location, if in location
 4 
 5 Sets the address of a FastCGI server. The address can be specified as a domain name or IP address, and a port:
 6 fastcgi_pass localhost:9000;
 7 
 8 or as a UNIX-domain socket path:
 9 fastcgi_pass unix:/tmp/fastcgi.socket;
10 
11 If a domain name resolves to several addresses, all of them will be used in a round-robin fashion. In addition, an address can be specified as a server group.

 

參考:

HTTP狀態碼

fastcgi_pass

Syntax: fastcgi_pass address; Default: — Context: locationif in location

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved