㈠ 網頁出現nginx error怎麼辦
方法1 (永久調整)
vi /etc/security/limits.conf
在文件末加上:
* soft
nofile 8192
* hard nofile 20480
同時vi /etc/sysctl.conf末尾添加
fs.file-max=8192
重新啟動,在使用ulimit -n查看的數已經是8192
方法2 (臨時用)
直接在終端輸入 ulimit -n 8192 按回車就ok了
500 Internal Server
Error錯誤補充:
1、硬碟空間滿了
使用 df -k
查看硬碟空間是否滿了。清理硬碟空間就可以解決500錯誤。nginx如果開啟了access log,在不需要的情況下,最好關閉access log。access
log會佔用大量硬碟空間。
2、nginx配置文件錯誤
這里不是指語法錯誤,nginx如果配置文件有語法錯誤,啟動的時候就會提示。當配置rewrite的時候,有些規則處理不當會出現500錯誤,請仔細檢查自己的rewrite規則。如果配置文件里有些變數設置不當,也會出現500錯誤,比如引用了一個沒有值的變數。
3、如果上面的問題都不存在可能是模擬的並發數太多了,需要調整一下nginx.conf的並發設置數
解決方法是:
1 打開/etc/security/limits.conf文件,加上兩句
復制代碼
代碼如下:
* soft nofile 65535
* hard nofile 65535
2 打開/etc/nginx/nginx.conf
在worker_processes的下面增加一行
復制代碼
代碼如下:
worker_rlimit_nofile 65535;
3
重新啟動nginx,重新載入設置
復制代碼
代碼如下:
kill -9 `ps -ef | grep php | grep -v grep | awk
'{print $2}'`
/usr/bin/spawn-fcgi -a 127.0.0.1 -p 9000 -C 100 -u www-data -f
/usr/bin/php-cgi
killall -HUP nginx
重啟後再看nginx的錯誤日誌,也沒有發現500報錯的情況了。
㈡ PHP寫的頁面無法訪問,報HTTP500錯誤,這個是怎麼回事
原因百分之80來自於網站根目錄的config.php文件中資料庫相關設定錯誤,這種錯誤排除,只要檢查一下config.php文件中的伺服器和資料庫名稱、使用者名稱、密碼,還有資料庫前綴字串,再來就是檔案文件路徑,只要是多一個或少一個符號、大小寫錯誤、空格…絕對會賞你一個[HTTP 500 內部伺服器發生錯誤]的排頭吃。
再來百分之10的錯誤來自於網站程式碼設計錯誤也會出現[HTTP 500 內部伺服器發生錯誤]的頁面,這個錯誤一來可以從視窗工具=>網際網路選項=>進階=>去掉勾選:顯示易懂的HTTP錯誤訊息,二來可以從網站根目錄的error_log紀錄中看出一些端倪,再來排除,還有百分之5剛好碰上訪問的網站在維護,最多的例子是網站升級和網站遷移。
將錯誤訊息顯示出來。
而顯示的方法有兩種,一種是設定php.ini;另一種是透過程式碼開啟,操作方法請參考以下:
一、設定php.ini
1.首先開啟php.ini檔
2.使用「Ctrl」+「F」搜尋【display_errors】
3.將「display_errors=Off」改為「display_errors=On」
4.重新啟動Apache
5.重啟開啟網頁
二、透過程式碼開啟
1.開啟顯示「伺服器錯誤(500)」的程式檔
2.於程式檔加入以下程式碼
ini_set("display_errors", "On"); // 設定是否顯示錯誤( On=顯示, Off=隱藏 )
3.重啟開啟網頁
㈢ php 502 bad gateway怎麼解決
1. php.ini的memory_limit 過小(如果有個別php程序進程需要佔用極大內存時這個必須注意)
2. php-fpm.conf中max_children或者max_requests 設置不合理(設置過小會因為沒有足夠的cgi進程處理請求,設置過大會出現一會兒有響應正常,一會兒等很久才有響應的情況,一般情況下children按 照內存計算,比如說1G設置64,2G128。這個根據實際情況自行調整。另外查看當前的PHP FastCGI進程數是否夠用的命令為:netstat -anpo |grep “php-cgi” | wc -l 如果實際使用的“FastCGI進程數”接近預設的“FastCGI進程數”,那麼,說明“FastCGI進程數”不夠用,需要增大。)
3. 查看nginx錯誤日誌,發現 pstream sent too big header while reading response headerfrom upstream ,則檢查client head buffer,fastcgi buffer size是否過小,可設置為32K。
4. php程序執行時間過長而超時,檢查nginx和fastcgi中各種timeout設置。(nginx 中的 fastcgi_connect_timeout 300;fastcgi_send_timeout 300 :fastcgi_read_timeout300; keepalive_timeout ; php-fpm中的request_terminate_timeout,php.ini中的max_execution_time)
5. php-fpm有一個參數 max_requests ,該參數指明了每個children最多處理多少個請求後便會被關閉。在大量處理請求下,如果該值設置過小會導致children頻繁的自殺和建立而浪費 大量時間,若所有的children差不多都在這個時候自殺,則重建前將沒有children響應請求,於是出現502 。可以將該值設置大一些或者是0[無限]。
如果你伺服器並發量非常大,那隻能先增加機器,然後按以下方式優化會取得更好效果;但如果你並發不大卻出現502,一般都可以歸結為配置問題,腳本超時問題。
1.php-fpm進程數不夠用
使用netstat -napo |grep "php-fpm" | wc -l查看一下當前fastcgi進程個數,如果個數接近conf里配置的上限,就需要調高進程數。
但也不能無休止調高,可以根據伺服器內存情況,可以把php-fpm子進程數調到100或以上,在4G內存的伺服器上200就可以。
2. 調高調高linux內核打開文件數量
可以使用這些命令(必須是root帳號)
echo 'ulimit -HSn 65536'>> /etc/profile
echo 'ulimit -HSn 65536'>> /etc/rc.local
source /etc/profile
3.腳本執行時間超時
如果腳本因為某種原因長時間等待不返回,導致新來的請求不能得到處理,可以適當調小如下配置。
nginx.conf裡面主要是如下
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
php-fpm.conf里如要是如下
request_terminate_timeout =10s
4.緩存設置比較小
修改或增加配置到nginx.conf
proxy_buffer_size 64k;
proxy_buffers 512k;
proxy_busy_buffers_size 128k;
5. recv()failed (104: Connection reset by peer) while reading response header fromupstream
可能的原因機房網路丟包或者機房有硬體防火牆禁止訪問該域名
但最重要的是程序里要設置好超時,不要使用php-fpm的request_terminate_timeout,
最好設成request_terminate_timeout=0;
因為這個參數會直接殺掉php進程,然後重啟php進程,這樣前端nginx就會返回104: Connection reset by peer。這個過程是很慢,總體感覺就是網站很卡。
May 01 10:50:58.044162[WARNING] [pool www] child 4074, script'/usr/local/nginx/html/quancha/sameip/detail.php' execution timed out(15.129933 sec), terminating
May 01 10:50:58.045725 [WARNING] [pool www] child 4074 exited on signal 15SIGTERM after 90.227060 seconds from start
May 01 10:50:58.046818 [NOTICE] [pool www] child 4082 started
說一千道一萬最重要的就是程序里控制好超時,gethostbyname、curl、file_get_contents等函數的都要設置超時時間。
另一個就是多說,這個東西是增加了網站的交互性,但是使用的多了反應就慢了,如果你網站超時且使用了多說是,可以關閉它。
6、自己遇到502的解決辦法:
調整增大php 和Nginx 的backlog數。
㈣ b站打不開,500 Internal Server Error
一般解決思路:查看nginx、php的錯誤日誌文件,從而看出端倪。如果是too many open files,修改nginx的worker_rlimit_nofile參數,使用ulimit查看系統打開文件限制。
修改/etc/security/limits.conf,還是出現too many open files,那就要考慮做負載均衡,把流量分散到不同伺服器上去了。如果是腳本的問題,則需要修復腳本錯誤,優化代碼。
㈤ nginx本地配置多虛擬主機怎麼老是出現500錯誤
500的錯,多數是內部的,php級別居多,都是致命的錯誤。看了你的nginx配置,雖然不是很標準的寫法,暫時沒發現問題,而且nginx出現500的機率不多。具體排錯要看nginx的錯誤日誌才能說昨准。
先這樣:
根據你的描述,很可能php中關於mysql的擴展未載入。試寫一個測試文件,內容<?php phpinfo(); ?>看看有沒有關於mysql的選項。
㈥ 同一主機nginx PHP環境建的基於埠的2個網站,不能同時訪問會報500錯誤
同時運行多個php版本嗎?PHPWAMP8.8.8.8n裡面的nginx是支持多版本同時運行的
這款軟體我也是剛發現的,很好用,很給力,自己不會搭建的話,可以用集成環境PHPWAMP8.8.8.8n,這個環境的NGinx站點管理很強大,支持無限自定義
以下內容來自網路經驗裡面的介紹
小編發現最近PHPWAMP集成環境又更新了phpwamp8.8.8.8n版本
phpwamp8.8.8.8n一共集成了12個PHP版本和3個mysql版本,並且可以高度自定義,你可以定義任何版本,解壓後差不多1個G的大小,壓縮包確僅有幾十M,解壓即可使用,純綠色很方便,集成了apache和nginx等,支持asp、php、net
大家知道Nginx官方的windows版本用著很不穩定,時不時就會掛掉,而且默認安裝後也不像apache那樣有服務可以開機啟動,畢竟nginx最適合的還是在linux下,不過最近更新的這款phpwamp8.8.8.8n安裝後是有服務的,該軟體作者自己寫了一個Nginx服務,能開機啟動,而且還能給每個站點分配不一樣的進程,也可以隨意指定站點的php版本!最關鍵的是該服務啟動的php-cgi進程,就算你手動用殺毒軟體的任務管理器也關不掉!關掉後會自動恢復,而且網站服務依舊正常!!除非你自己點擊軟體界面上的卸載服務才會關閉,該保護功能可以對網站進程起到保護作用。
㈦ 500 Internal Server Error錯誤怎麼回事
500 Internal Server Error錯誤原因總結:
1、當訪問的程序出錯時,就會返回500錯誤。
解決辦法:
1、給「系統盤:」目錄添加一個「Authenticated Users」的用戶,其中AppData目錄是隱藏的,在進入的時候可以直接在地址欄輸入路徑,或者在文件夾選項里顯示隱藏文件。2、設置許可權步驟:
右擊Temp文件夾,選擇「屬性」》選擇「安全」選項卡》單擊「編輯」》出來「Temp 的許可權」對話框,單擊「添加」,在下面的「輸入對象名稱來選擇」中輸入Authenticated Users(也可以點擊「高級...」按鈕,再點擊「查找」按鈕,在查找結果中選擇Authenticated Users),確定》返回到「Temp 的許可權」,將Authenticated Users的許可權中的完全控制給勾上,確定》確定。