NGINX常見問題及其優化
阿新 • • 發佈:2018-12-19
- 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報錯狀態碼
第一步:安裝的時候載入模組 [[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秒後個過期。