自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Nginx php如何解決502 Bad Gateway錯誤

開發(fā) 前端
Nginx php一直為我們的服務器服務著。那我們?yōu)槭裁慈绾尾拍芨玫倪M行相關(guān)的錯誤更正,下面我們就詳細的看看有關(guān)的內(nèi)容。

在Web服務器中有很多先進的技術(shù),Nginx php就是其中的一個,接下來我們就看看在Nginx 中的相關(guān)問題解決,希望大家有所收獲。Nginx php中配置php fastcgi組解決莫名其妙的502 Bad Gateway錯誤

一般Nginx php都采用這樣的方式:

  1. location ~ \.php$ {  
  2. proxy_pass http://localhost:9000;  
  3. fastcgi_param SCRIPT_FILENAME /data/_hongdou$fastcgi_
    script_name;  
  4. include fastcgi_params;  

這個方式只能連接到一組spawn-fcgi開啟的fastcgi,在服務器負載稍高時常常出現(xiàn)502 bad gateway錯誤。

起先懷疑這是php-cgi的進程開得太少,增加后仍然有反映時常有錯,偶然間發(fā)現(xiàn)php-cgi會報出這樣的錯誤:

  1. zend_mm_heap corrupted 

看來是php-cgi在執(zhí)行某些代碼時有問題,以致于該線程中止。

在服務器上可能還會看到php-cgi進程在不斷變少,估計是出現(xiàn)錯誤的php-cgi的進程自動退出了。

php的問題總是不太容易能解決,所以在Nginx php方面想想辦法,Nginx的好處是它總是能爆出一些稀奇古怪的做法出來。在Nginx的proxy中,規(guī)避莫名其妙錯誤的辦法無非是proxy到一個upstream的服務器組中,然后配置proxy_next_upstream,讓Nginx遇到某種錯誤碼時,自動跳到下一個后端上。這樣,應用服務器即使不穩(wěn)定,但是在Nginx后面就變成了穩(wěn)定服務。想到Nginx的fastcgi和proxy是一路東西,所以proxy能用的經(jīng)驗,移植到fastcgi也能跑得起來。照著這個思路,用spawn-fcgi多開同樣一組php進程,所不同的僅僅是端口:

  1. spawn-fcgi -a 127.0.0.1 -p 9000 -u nobody -f php-cgi -C 100  
  2. spawn-fcgi -a 127.0.0.1 -p 9001 -u nobody -f php-cgi -C 100 

然后把fastcgi的這段配置改成用upstream的方式:

  1. upstream backend {  
  2. server 127.0.0.1:9000;  
  3. server 127.0.0.1:9001;  
  4. }  
  5. location ~ \.php$ {  
  6. proxy_pass http://backend;  
  7. fastcgi_param SCRIPT_FILENAME /data/_hongdou$fastcgi_
    script_name;  
  8. include fastcgi_params;  

檢查配置結(jié)果正確,能跑起來;同時在服務器上netstat -n|grep 9000和grep 9001都有記錄,證明連接無誤;在前臺查閱頁面,一切運行正常。這個配置是最簡單的配置,既然能連接上upstream,那么很顯然upstream的一些東西都可以拿來用,比如ip_hash、weight、max_fails等。這樣的配置在單機下不知能不能共享session,沒有測試,如果有問題,可以加上ip_hash,或者配置php把session存進memcached中。然后就是fastcgi_next_upstream的配置,Nginx wiki中沒有介紹到這個配置,查了一下,在Nginx php的CHANGES中有提到,而且出生年月是和proxy_next_upstream一樣的。

既然如此,那就照proxy_next_upstream一樣配吧。一般按默認的值error timeout就可以工作,因為php出現(xiàn)502錯誤的異常是返回的500錯誤,所以我把fastcgi_next_upstream定為:fastcgi_next_upstream error timeout invalid_header http_500;通過這個配置,就可以基本杜絕任何時常性的500錯誤,出問題的幾率會變小很多,如果客戶反映仍然激烈,那么就多增加幾組fastcgi進程。以上配置能夠杜絕由于php所引起的“莫名其妙”的時常性的502錯誤,同時可使Nginx搭配php比從前方式更為強悍。假如Nginx還是返回502錯誤,那這次就一定是出現(xiàn)服務器掛掉或其它嚴重問題的了。

【編輯推薦】

  1. Nginx配置如何解決瑣碎標簽問題
  2. Nginx負載均衡器如何實現(xiàn)自行共享
  3. Nginx代理服務器中的文件整理系統(tǒng)
  4. Nginx Web服務器標準IP解決方案
  5. Nginx異步代理四步解決相關(guān)問題
責任編輯:張浩 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2018-06-14 09:00:00

WordPress瀏覽器Web服務器

2010-03-29 17:46:39

Nginx asp

2010-03-26 18:41:51

Nginx 502錯誤

2014-06-11 09:34:22

vSphere虛擬機

2010-11-17 09:48:07

Nginx 502錯誤

2017-08-02 15:51:24

PHP中文亂碼

2010-03-24 09:25:36

Nginx配置

2009-12-11 13:33:14

PHP無法修改head

2011-05-23 09:51:30

MySQL

2017-04-07 08:43:46

數(shù)據(jù)分析錯誤解決

2019-02-25 11:16:29

Windows 10錯誤distributed

2018-09-20 11:04:02

NginxPHP-FPM502

2011-12-05 13:09:08

2024-07-11 08:36:47

Nginx端口服務器

2010-10-08 11:41:38

PHP連接MYSQL

2025-01-13 08:09:51

Nginx管理工具DevOps

2012-09-05 11:09:15

SELinux操作系統(tǒng)

2019-06-12 10:15:17

Windows 10 錯誤系統(tǒng)配置信息

2015-07-14 10:54:50

PHP數(shù)據(jù)循環(huán)內(nèi)存耗盡

2024-09-11 16:56:39

點贊
收藏

51CTO技術(shù)棧公眾號