技術(shù)員聯(lián)盟提供win764位系統(tǒng)下載,win10,win7,xp,裝機(jī)純凈版,64位旗艦版,綠色軟件,免費(fèi)軟件下載基地!

當(dāng)前位置:主頁(yè) > 教程 > 服務(wù)器類 >

nginx安裝wordpress 502 Bad Gateway

來(lái)源:技術(shù)員聯(lián)盟┆發(fā)布時(shí)間:2018-09-23 18:00┆點(diǎn)擊:

  首先是更改php-fpm的幾處配置:

  /www/wdlinux/php/etc/php-fpm.conf

  /www/wdlinux/etc/php-fpm.conf 把max_children由之前的10改為現(xiàn)在的30,這樣就可以保證 有充足的php-cgi進(jìn)程可以被使用;

  把request_terminate_timeout由之前的0s改為60s,這樣php-cgi進(jìn)程 處理腳本的超時(shí)時(shí)間就是60秒,可以防止進(jìn)程都被掛起,提高利用效率。

  打開(kāi) /usr/local/php/etc/php-fpm.conf

  調(diào)大以下兩個(gè)參數(shù)(根據(jù)服務(wù)器實(shí)際情況,過(guò)大也不行)

  5120

  600

  504 timeout

  send_timeout 60;

  fastcgi_buffers 8 128k;

  在/www/wdlinux/nginx/conf/nginx.conf

  里增加和調(diào)整下這兩個(gè)參數(shù)試試,附其它解決方法

  一、fastcgi緩沖區(qū)設(shè)置過(guò)小

  出現(xiàn)錯(cuò)誤,首先要查找nginx的日志文件,目錄為/var/log/nginx,在日志中發(fā)現(xiàn)了如下錯(cuò)誤。

  2013/01/17 13:33:47 [error] 15421#0: *16 upstream sent too big header while reading response header from upstream

  查閱了一下資料,大意是nginx緩沖區(qū)有一個(gè)bug造成的,我們網(wǎng)站的頁(yè)面消耗占用緩沖區(qū)可能過(guò)大。

  網(wǎng)上查找了一下解決方法,在國(guó)外網(wǎng)站看到了一個(gè)增加緩沖區(qū)的方法,徹底解決了Nginx 502 Bad Gateway的問(wèn)題。方法如下:

  http {

  ...

  fastcgi_buffers 8 16k;

  fastcgi_buffer_size 32k;

  ...

  }

  請(qǐng)根據(jù)服務(wù)器已經(jīng)網(wǎng)站的情況自行增大上述兩個(gè)配置項(xiàng)。

  二、代理緩沖區(qū)設(shè)置過(guò)小

  如果你使用的是nginx反向代理,如果header過(guò)大,超出了默認(rèn)的1k,就會(huì)引發(fā)上述的upstream sent too big header (說(shuō)白了就是nginx把外部請(qǐng)求給后端處理,后端返回的header太大,nginx處理不過(guò)來(lái)就會(huì)導(dǎo)致502。

  server {

  listen 80;

  server_name *.lxy.me;

  location / {

  ###############添加這3行

  proxy_buffer_size 64k;

  proxy_buffers 32 32k;

  proxy_busy_buffers_size 128k;

  ###############添加這3行

  proxy_set_header Host $host;

  proxy_set_header X-Real-IP $remote_addr;

  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  ............

  }

  三、默認(rèn)php-cgi的進(jìn)程數(shù)設(shè)置過(guò)少

  在安裝好使用過(guò)程中出現(xiàn)502問(wèn)題,一般是因?yàn)槟J(rèn)php-cgi進(jìn)程是5個(gè),可能因?yàn)閜hpcgi進(jìn)程不夠用而造成502,需要修改/usr/local/php/etc/php-fpm.conf 將其中的max_children值適當(dāng)增加。也有可能是max_requests值不夠用。需要說(shuō)明的是這連個(gè)配置項(xiàng)占用內(nèi)存很大,請(qǐng)根據(jù)服務(wù)器配置進(jìn)行設(shè)置。否則可能起到反效果。

  四、php執(zhí)行超時(shí)

  php執(zhí)行超時(shí),修改/usr/local/php/etc/php.ini 將max_execution_time 改為300

  五、nginx等待時(shí)間超時(shí)

  部分PHP程序的執(zhí)行時(shí)間超過(guò)了Nginx的等待時(shí)間,可以適當(dāng)增加nginx.conf配置文件中FastCGI的timeout時(shí)間

  http {

  fastcgi_connect_timeout 300;

  fastcgi_send_timeout 300;

  fastcgi_read_timeout 300;