常見nginx優化
一:自定義報錯頁面
1)優化前,客戶端使用瀏覽器訪問不存在的頁面,會提示404檔案未找到
[root@client ~]# firefox //訪問乙個不存在的頁面
2)修改nginx配置檔案,自定義報錯頁面
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
… …charset utf-8; //僅需要中文時需要改選項,可選項
error_page 404 /404.html; //自定義錯誤頁面
… …[root@proxy ~]# vim /usr/local/nginx/html/404.html //生成錯誤頁面
oops,no no no page …
[root@proxy ~]# nginx -s reload
3)優化後,客戶端使用瀏覽器訪問不存在的頁面,會提示自己定義的40x.html頁面
[root@client ~]# firefox //訪問乙個不存在的頁面
4)常見http狀態碼
二:如何檢視伺服器狀態資訊(非常重要的功能)
1)編譯安裝時使用–with-http_stub_status_module開啟狀態頁面模組
[root@proxy ~]# tar -zxvf nginx-1.12.2.tar.gz
[root@proxy ~]# cd nginx-1.12.2
[root@proxy nginx-1.12.2]# ./configure \
–with-http_ssl_module //開啟ssl加密功能2)啟用nginx服務並檢視監聽埠狀態–with-stream //開啟tcp/udp**模組
–with-http_stub_status_module //開啟status狀態頁面
[root@proxy nginx-1.12.2]# make && make install //編譯並安裝
ss命令可以檢視系統中啟動的埠資訊,該命令常用選項如下:
[root@proxy ~]# /usr/local/nginx/sbin/nginx
[root@proxy ~]# netstat -anptu | grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* listen 10441/nginx
[root@proxy ~]# ss -anptu | grep nginx
3)修改nginx配置檔案,定義狀態頁面
[root@proxy ~]# cat /usr/local/nginx/conf/nginx.conf
… …location /status
… …[root@proxy ~]# nginx
4)優化後,檢視狀態頁面資訊
[root@proxy ~]# curl
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:當前多少客戶端在等待伺服器的響應。
三 優化nginx 併發量
1ab -c 10000 -n 10000 高併發測試)
wc -l /usr/local/nginx/logs/access.log
併發量沒有固定值 :cpu 電腦效能,頻寬 流量
靜態資料(nginx jpg *** mp4)
動態( mginx 指令碼 php :1cpu 2 **質量)
2 修改nginx配置檔案,增加併發量
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf
worker_processes 2; //與cpu核心數量一致
events
dourl=url
vv
urlv
i=$i
done
curl $url
[root@proxy ~]# ./buffer.sh
3 重啟[root@proxy ~]# nginx -s reload
4 測試
[root@client ~]# firefox
六 日誌切割
日誌檔案越來越大怎麼辦?單個檔案10g? 如何切割?(非常常見的面試題
步驟:1. 把舊的日誌重新命名
2. kill usr1 pid(nginx的程序pid號)
1)手動執行
備註:/usr/local/nginx/logs/nginx.pid #檔案中存放的是nginx的程序pid號。
[root@proxy ~]# mv access.log access2.log #`改名
[root@proxy ~]# kill -usr1 $(cat /usr/local/nginx/logs/nginx.pid) #kill 作用傳遞訊號給程序
kill -l 64種選擇
kill 程序號 預設15 kill ->殺死
kill -9 程序號 強制殺死
kill -19 sigstop -睡覺
kill -18 sigcont -醒來
ls 驗證檢視
2)自動完成
每週5的03點03分自動執行指令碼完成日誌切割工作。
[root@proxy ~]# vim /usr/local/nginx/logbak.sh
#!/bin/bash
date=date +%y%m%d
logpath=/usr/local/nginx/logs
mv $logpath/access.log log
path
/acc
ess−
logpath/access-
logpat
h/ac
cess
−date.log
mv $logpath/error.log log
path
/err
or
−logpath/error-
logpat
h/er
ror−
date.log
kill -usr1 $(cat $logpath/nginx.pid)
[root@proxy ~]# crontab -e
03 03 * * 5 /usr/local/nginx/logbak.s
here, the apache error log and access log are interlineated.
在這裡,把apache錯誤日誌和訪問日誌合併在一起。
步驟八:伺服器記憶體快取
1)如果需要處理大量靜態檔案,可以將檔案快取在記憶體,下次訪問會更快。
快取到記憶體,啟動速度會特別快
Linux運維 高階指令
df 作用 檢視磁碟的空間 df h h 以較高可讀性展示大小 free 作用 檢視記憶體使用情況 free m m 以兆m為單位的形式顯示。這裡用 h可能會被四捨五入 作用 檢視乙個檔案的前n行,如果不指定n,則預設顯示前10行。n表數字 head n 檔案路徑 head 5 install.lo...
Linux高階運維命令(awk)
awk是乙個強大的文字分析工具,相對於grep的查詢,sed的編輯,awk在其對資料分析並生成報告時,顯得尤為強大。簡單來說awk就是把檔案逐行的讀入,以空格為預設分隔符將每行切片,切開的部分再進行各種分析處理。awk有3個不同版本 awk nawk和gawk,未作特別說明,一般指gawk,gawk...
Linux高階運維命令(sed)
sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作。sed命令列格式為 sed nefri command 輸入文字sed n 2000,p fname lesssed n 2016 06 09 p catalina.out...