天天看點

Nginx深度優化

隐藏版本号

修改使用者與組

網頁緩存時間

日志切割

連接配接逾時

更改程序數

網頁壓縮

防盜鍊

FPM參數優化

一、隐藏版本号

1.在centos7系統中通過curl指令檢視

curl -I http://192.168.100.26

Nginx深度優化

2.修改nginx.conf配置檔案,在http{}内添加server_tokens off;語句

Nginx深度優化

3.重新開機nginx

killall -1 nginx

4.使用curl指令檢視驗證

Nginx深度優化

二、修改使用者與組

Nginx運作時程序需要有使用者群組的支援,用以實作對網站檔案讀取時進行通路控制。主程序由root建立,子程序由指定的使用者與組建立,預設為nobody。

1.編譯nginx時指定使用者與組

./configure

--prefix=/usr/local/nginx

--user=nginx

--group=nginx

--with-http_stub_status_module

2.修改nginx配置檔案指定使用者與組

vim /usr/local/nginx/conf/nginx.conf

Nginx深度優化

4.檢視nginx程序資訊(主程序root使用者,子程序nginx使用者)

ps aux | grep nginx

Nginx深度優化

三、網頁緩存時間

當Nginx将網頁資料放回給用戶端後,可以設定緩存時間,以便日後進行重複請求通路,以加快通路速度、同時減輕伺服器壓力,一般對靜态資源進行設定,對動态網頁不要設定緩存時間。

1.下面對網站的圖檔進行指定緩存時間設定

Nginx深度優化

2.修改nginx配置檔案,指定緩存時間為1天

location ~.(gif|jpg|jepg|png|bmp|ico)$ {

root html;

expires 1d;

}

Nginx深度優化

4.Fiddler工具進行抓包驗證

Nginx深度優化

四、日志切割

Nginx通過nginx的信号控制功能腳本來實作日志的自動切割,并将腳本加入到Linux的計劃性任務中,讓腳本在每天固定的時間執行,得以實作日志切割功能。

1.編寫fenge.sh腳本

vim /opt/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}/test.com-access.log-$d

kill -USR1 $(cat $pid_path) #建立新日志檔案

find $logs_path -mtime +30 | xargs rm -rf #删除30天前的日志檔案

2. 為腳本賦予執行權限

chmod +x /opt/fenge.sh

3.執行腳本,測試日志檔案是否分割成功

. /fenge.sh

Nginx深度優化

4.添加計劃性任務

crontab -e

#每日淩晨1:00執行腳本

0 1 * /opt/fenge.sh

五、連接配接逾時

一般網站中,為了避免同一個客戶長時間占用連接配接,造成資源浪費,可設定相應的連接配接逾時參數,實作對連接配接通路時間的控制。

1. 修改nginx.conf配置檔案

Nginx深度優化

2.重新開機nginx

3.對網站進行通路,并使用Fiddler工具進行抓包驗證

Nginx深度優化

六、更改程序數

在高并發環境中,需要啟動更多的Nginx程序以保證快速響應,用以處理使用者的請求,避免造成阻塞。

1.檢視ngixn運作程序的個數

cat /proc/cpuinfo | grep -c "physical"

2.修改nginx.conf配置檔案

Nginx深度優化

killall-1 nginx

4.檢視nginx程序數

Nginx深度優化

七、網頁壓縮

Nginx伺服器将輸出内容壓縮後進行傳輸,以節約網站的帶寬,提升使用者的通路體驗,預設已經安裝了該子產品。

1.修改nginx.conf配置檔案

gzip on;

gzip_buffers 4 64k;

gzip_http_version 1.1;

gzip_comp_level 2;

gzip_min_length 1k;

gzip_vary on;

gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss text/jpg text/png;

3.建立一個大于1KB以上的網頁檔案,然後對其進行通路抓包

curl -I -H "Accept-Encoding: gzip, deflate" 192.168.100.26/

Nginx深度優化

八、防盜鍊

在網站中,一般都要配置防盜鍊功能,以避免網站内容被非法盜用,造成經濟損失,也避免了流量的浪費。

location ~.(jpg|gif|swf)$ { #比對.jpg 、.gif 、或 .swf結尾的檔案

valid_referers none blocked .abc.com abc.com; #信任域名站點

if ( $invalid_referer ) {

rewrite ^/ http://www.abc.com/error.png; #重寫傳回error.png

九、FPM參數優化

Nginx的PHP解析功能實作是由FPM處理的,為了提高PHP的處理速度,可對FPM子產品進行參數的調整。

1.安裝帶有FPM子產品的PHP環境; 2.FPM程序有兩種啟動方式,由pm參數指定,分别是static和dynamic,前者将産生固定資料的FPM程序,後者将以動态的方式産生FPM程序;

1.修改php-fpm.conf檔案

vi php-fpm

.conf

pid = run/php-fpm.pid

pm = dynamic #動态方式

pm.max_children=20 #最大啟動程序數量為20個

pm.start_servers = 5 #初始啟動時程序為5個

pm.min_spare_servers = 2 #最小空閑程序數為2個

pm.max_spare_servers = 8 #最大空閑程序數為8個

迎工作一到五年的Java工程師朋友們加入Java架構開發:860113481

群内提供免費的Java架構學習資料(裡面有高可用、高并發、高性能及分布式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!