1. 程式人生 > >NGINX常見問題及其優化

NGINX常見問題及其優化

- 1)修改nginx伺服器預設的報錯頁面

[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
.. ..
error_page   404  /40x.html;    //自定義錯誤頁面
.. ..
[[email protected] ~]# vim /usr/local/nginx/html/40x.html        //生成錯誤頁面
Do not find page …
[[email protected] ~]# nginx -s reload
修改完配置檔案一定要進行配置檔案的重新載入

2)常見的http報錯狀態碼 在這裡插入圖片描述

3)檢視伺服器的狀態資訊

第一步:安裝的時候載入模組
[[email protected] nginx-1.12.2]# ./configure   \
> --with-http_stub_status_module                //開啟status狀態頁面
[[email protected] nginx-1.12.2]# make && make install    //編譯並安裝
安裝nginx的時候新增上--with-http_stub_status_module模組
第二步:修改nginx的預設的配置檔案
[[email protected]
~]# cat /usr/local/nginx/conf/nginx.conf … … location /status { stub_status on; 開啟顯示nginx伺服器狀態 #allow IP地址; #deny IP地址; } … … [[email protected] ~]# nginx -s reload 記住:沒一次修改預設配置檔案的時候都需要重新載入配置檔案 第三步:檢視優化後的狀態頁面資訊 [[email protected] ~]# curl http://192.168.4.5/status Active connections: 1 server accepts handled requests 10 10 3 Reading: 0 Writing: 1 Waiting: 0 ################################################### Active connections:當前活動的連線數量。 Accepts:已經接受客戶端的連線總數量。 Handled:已經處理客戶端的連線總數量。 (一般與accepts一致,除非伺服器限制了連線數量)。 Requests:客戶端傳送的請求數量。 Reading:當前伺服器正在讀取客戶端請求頭的數量。 Writing:當前伺服器正在寫響應資訊的數量。 Waiting:當前多少客戶端在等待伺服器的響應。

4)優化nginx併發量

第一步:優化之前採用ab高併發測試,顯示報錯資訊
[[email protected] ~]# ab -n 2000 -c 2000 http://192.168.4.5/
Benchmarking 192.168.4.5 (be patient)
socket: Too many open files (24)                
//too many open files表示開啟檔案數量過多,其實就是併發量太小限制了檔案的開啟
第二步:修改配置增加併發量
	**方法一:修改nginx內建的配置檔案**
	[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
	.. ..
	worker_processes  2;                    //修改同一時間的程序數,與CPU核心數量一致
	events {
	worker_connections 65535;        //修改每個worker最大併發連線數,修改為最大值:65535.
	use epoll;
	}
	.. ..
[[email protected] ~]# nginx -s reload		//重新載入nginx的預設配置檔案
	**方法二:修改linux核心引數(修改最大檔案的連線數量)**
	[[email protected] ~]# ulimit -a                        //檢視所有屬性值
	[[email protected] ~]# ulimit -Hn 100000                //設定硬限制(臨時規則)
	[[email protected] ~]# ulimit -Sn 100000                //設定軟限制(臨時規則)
	以上設定的都是臨時規則,重起之後就會失效,想要實現永久規則,必須修改配置檔案
	[[email protected] ~]# vim /etc/security/limits.conf
	    .. ..
	*               soft    nofile            100000
	*               hard    nofile            100000
	以上四列對應的內容分別為:
	*                        (hard|soft )              nofile                    100000
	使用者或組			硬限制或軟限制 			限制的專案			限制的值
nofile,在配置檔案的例子中可以查詢,對應的資訊
35#        - nofile - max number of open file descriptors
第三步:優化之後從新測試伺服器的併發量
[[email protected]~]# ab -n 2000 -c 2000 http://192.168.4.5/

5)優化nginx資料包頭快取

第一步:顯示常見的報錯資訊
		414 Request-URI Too Large				//顯示url路徑太長,平時基本上用不到此項優化
第二步:修改nginx預設配置檔案增加包頭快取資訊
		[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
		.. ..
		http {
		client_header_buffer_size    4k;        //預設請求包頭資訊的快取    
		large_client_header_buffers  4 4k;        //大請求包頭部資訊的快取個數與容量
		.. ..
		}
[[email protected] ~]# nginx -s reload   記得重新載入配置檔案或者重新啟動伺服器
第三步:再去重新訪問驗證,就會顯示正常資訊

6)優化nginx伺服器對於本第瀏覽器的快取配置

第一步:開啟瀏覽器,檢視都有那些快取專案
位址列輸入:about:cache檢視
第二步:開啟nginx的配置檔案,檢視nginx對頁面的換村專案以及快取時間
[[email protected] ~]# vim /usr/local/nginx/conf/nginx.conf
server {
        listen       80;
        server_name  localhost;
        location / {
            root   html;
            index  index.html index.htm;
        }
location ~* \.(jpg|jpeg|gif|png|css|js|ico|xml)$ {
正則匹配對於哪些專案進行快取,~表示正則,屬於模糊匹配
expires        30d;            //定義為客戶端快取時間為30天
}
第三步:重新載入配置檔案
[[email protected]~]# nginx -s reload

7)對頁面進行壓縮處理

		為了題號nginx伺服器的相應速度,所以指定對於某些比較大的檔案在傳遞的過程中進行壓縮處理
[[email protected] ~]# cat /usr/local/nginx/conf/nginx.conf
http {
.. ..
gzip on;                         				//開啟nginx的頁面壓縮
gzip_min_length 1000;                //小於1000k的檔案不壓縮
gzip_comp_level 4;                		//壓縮比率
壓縮比率在0~9之間,壓縮比率越大,壓縮越徹底,但是速度比較慢,所以取一個合適 的值
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 //對特定檔案壓縮,型別參考mime.types
.. ..
}

8)優化nginx的記憶體快取

如果需要處理大量的靜態檔案,可以將檔案快取在記憶體,下次訪問的時候會更快。
[[email protected] ~]# cat /usr/local/nginx/conf/nginx.conf
http { 
open_file_cache          max=2000  inactive=20s;
        open_file_cache_valid    60s;
        open_file_cache_min_uses 5;
        open_file_cache_errors   off;
//設定伺服器最大快取2000個檔案控制代碼,關閉20秒內無請求的檔案控制代碼
//檔案控制代碼的有效時間是60秒,60秒後自動過期
//只有訪問次數超過5次會被快取,快取時間為指定的60秒鐘,60秒後個過期。