CentOS7.4—最新版本nginx調優
目錄
第一部分 優化版本信息
第二部分 保持連接
第三部分 優化進程數
第四部分 日誌分割
第五部分 網頁壓縮
Nginx安裝過程不再這裏展示,請參照http://blog.51cto.com/12227558,下面直接進入調優
第一部分 優化版本信息
----------隱藏版本信息----------
第一步:查看版本信息
方法一:
[root@localhost ~]# curl -I 192.168.80.40
方法二:Wireshark抓包
Win7訪問http://192.168.80.40/index.php
(註意:要後綴帶php文件,才能顯示出php的信息)
第二步:隱藏版本信息
- 隱藏nginx版本
添加以下內容:
保存退出
[root@localhost ~]# systemctl restart nginx //重啟nginx服務 - 隱藏php信息
[root@localhost ~]# vi /usr/local/php/lib/php.ini
修改以下內容:
保存退出
[root@localhost ~]# systemctl restart nginx //重啟nginx服務
第三步:測試驗證
方法一:
[root@localhost ~]# curl -I 192.168.80.40
方法二:Wireshark抓包
訪問:http://192.168.80.40/index.php
//已成功隱藏
----------修改nginx版本信息---------
(註意,此方法會把現有配置全部刪除,建議剛搭建完nginx時使用)
一:編輯配置文件
[root@localhost ~]# vi /opt/nginx-1.13.9/src/core/nginx.h
源碼目錄下修改信息:
保存退出
二:刪除安裝文件目錄並重新編譯安裝
[root@localhost ~]# cd /usr/local/
[root@localhost local]# rm -rf nginx/ //刪除nginx安裝目錄
[root@localhost local]# cd /opt/nginx-1.13.9/ //進入nignx解壓包目錄
[root@localhost nginx-1.13.9]# Make //編譯
[root@localhost nginx-1.13.9]# make install //安裝
[root@localhost nginx-1.13.9]# killall -1 nginx //安全重啟nginx服務
[root@localhost nginx-1.13.9]# nginx //啟動nginx服務
[root@localhost nginx-1.13.9]# netstat -anpt | grep nginx //查看nginx運行狀態
三:重新訪問http://192.168.80.10,抓包驗證
//偽裝成功
第二部分 保持連接
一: wireshark抓包查看連接配置
二: 編輯配置文件
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
編輯以下內容:
keepalive_timeout 65 180; //以後者為準,可以在http\server\location設置
client_header_timeout 80; //等待客戶端發送請求頭的超時時間 超時會發送408錯誤
client_body_timeout 80; //設置客戶端發送請求體超時時間
保存退出
(備註:keepalive_timeout第一個參數指定了與客戶端的keep-alive連接超時時間,服務器將會在這個時間後關閉連接。可選的第二個參數指定了在響應頭Keep-Alive:timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關閉連接,這樣服務器就不必去關閉連接了。若沒有這個參數,Nginx將不會發送Keep-Alive響應頭)
[root@localhost ~]# service nginx restart //重啟nginx服務
三: 抓包驗證結果
訪問http://192.168.80.40
用wireshark抓包
//配置成功
第三部分 優化進程數
將nginx服務原來由一個CPU核心處理,配置成由多個核心處理,增加處理效率
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" //查看本機處理器
[root@localhost ~]# ps aux | grep nginx
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf //編輯nginx主配置文件
編輯以下內容:
保存退出
[root@localhost ~]# nginx –t //檢查語法錯誤
[root@localhost ~]# killall -9 nginx //結束nginx進程
[root@localhost ~]# service nginx start //啟動nginx服務
[root@localhost ~]# ps aux | grep nginx //查看nginx進程
第四部分 日誌分割
Nginx沒有專門的命令來執行日誌分割,只能通過腳本實現
[root@localhost ~]# ls /usr/local/nginx/logs/ //查看默認日誌
- 編寫日誌分割腳本
[root@localhost ~]# cd /usr/local/nginx/logs/
[root@localhost logs]# vi fenge.sh //創建日誌分割腳本
#!/bin/bash
#filename: fenge.sh
D=$(date -d "-1 day" "+%Y%m%d")
LOGS_PATH="/var/log/nginx" //指定分割日誌目錄
PID_PATH="/usr/local/nginx/logs/nginx.pid"
[ -d $LOGS_PATH ] || mkdir -p $LOGS_PATH //創建分割日誌文件目錄(如果存在就不創建,不存在就創建)
mv /usr/local/nginx/logs/access.log ${LOGS_PATH}/aa.com-access.log-$D //移動並重命名分割日誌文件
kill -USR1 $(cat $PID_PATH) //重建分割日誌文件
find $LOGS_PATH -mtime +30 | xargs rm –rf //超過30天自動刪除
保存退出 - 執行腳本,測試日誌是否被分割
[root@localhost ~]# sh fenge.sh //執行腳本
Win7訪問http://192.168.80.40
[root@localhost logs]# ls /var/log/nginx/ //查看分割日誌,按日期分割了日誌文件
- 做計劃任務,定期分割日誌
[root@localhost logs]# crontab –e
30 1 * sh /root/fenge.sh
(每天的淩晨1:30分執行/opt/fenge.sh腳本,進行日誌分割)
第五部分 配置網頁壓縮
- 修改Nginx的配置文件,加入壓縮功能參數
[root@localhost ~]# vi /usr/local/nginx/conf/nginx.conf
gzip on; //開啟gzip壓縮
gzip_buffers 4 64k; //表示申請4個單位為16KB的內存作為壓縮結果流緩存,默認值是申請與原始數據大小相同的內存空間來存儲gzip壓縮結果
gzip_http_version 1.1; //設置識別http協議版本
gzip_comp_level 2; //指定gzip壓縮比,壓縮比1最小,處理速度最快;壓縮比9最大,傳輸速度最快,但處理速度最慢,使用默認即可
gzip_min_length 1k; //設置允許壓縮的頁面最小字節數
gzip_vary on; //讓前端的緩存服務器緩存經過gzip壓縮的頁面
gzip_types text/pain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss; //壓縮類型,指哪些網頁文檔啟用壓縮功能
保存退出 - 修改網頁文件大小
[root@localhost ~]# ls -lh /usr/local/nginx/html/ //查看html文件大小
[root@localhost ~]# truncate -s 10k /usr/local/nginx/html/index.html
//由於壓縮配置默認為最小1KB文件,將index.html放大超過1K
[root@localhost ~]# service nginx restart //重啟nginx服務 - 驗證
Win7訪問http://192.168.80.40
用wireshark抓包驗證結果
//壓縮生效
(註意,如果結果出不來,清除一下瀏覽器緩存)
CentOS7.4—最新版本nginx調優