Nginx優化與防盜鏈

語言: CN / TW / HK

theme: condensed-night-purple

Ngnix優化

Ngnix優化主要有兩種,一種是配置上的優化:隱藏版本資訊,設定連線超時時間,配置防盜鏈等修改配置檔案資訊來對網頁維護升級,提升nginx的效能與穩定性。\ 一種是核心上的優化:在優化核心時,可以做的事情很多,不過,我們通常會根據業務特點來進行調整,當Nginx作為靜態web內容伺服器、反向代理或者提供壓縮伺服器的伺服器時,期核心引數的調整都是不同的,這裡針對最通用的、使Nginx支援更多併發請求的TCP網路引數做簡單的配置。

nginx之系統配置上的優化

隱藏版本資訊

檢視版本資訊\

js curl -I www.二級域名.com

可以在 CentOS 中使用命令 curl -I www.二級域名.com顯示響應報文首部資訊

image.png

隱藏版本資訊

```js 修改配置檔案  vim /usr/local/nginx/conf/nginx.conf  http {     include       mime.types;     default_type application/octet-stream;     server_tokens off; 新增這一行,關閉版本號     ......  }   ---------重啟服務  systemctl restart nginx ---------訪問測試  curl -I http://www.benet.com

```

image.png

image.png

修改執行使用者與組

js 修改配置檔案檔案  vim /usr/local/nginx/conf/nginx.conf  user nginx nginx; 取消註釋,修改使用者為nginx,組為nginx    重啟服務  systemctl restart nginx    檢視是否修改成功。可以看到主程序由root建立,子程序由nginx建立  ps aux | grep nginx

image.png

image.png

修改快取時間

js  修改nginx的配置檔案  vim /usr/local/nginx/conf/nginx.conf  http {  ......   server {   ......   location / {   root html;   index index.html index.htm;   }     #加入新的 location,以圖片作為快取物件   location ~* \.(gif|jpg|jepg|bmp|ico)$ {   root html;   expires 1d; #指定快取時間,1天   }  ......   }  }    #重啟nginx服務  systemctl restart nginx    #訪問測試  Linux系統中,開啟火狐瀏覽器,訪問 http://www.tt.com/work.jpg  右擊點檢視元素  選擇 網路 ---> 選擇 HTML、WS、其他  雙擊響應訊息檢視響應頭中包含 Cahce-Control:max-age=86400 表示快取時間是 86400 秒。  也就是快取一天的時間,一天之內瀏覽器訪問這個頁面,都是用快取中的資料,而不需要向 Nginx 伺服器重新發出請求,減少了伺服器的使用頻寬。

image.png

image.png

日誌分割

隨著Nginx執行時間的增加,產生的日誌也會逐漸增加,為了方便掌握Nginx的執行狀態,需要時刻關注Nginx日誌檔案。太大的日誌檔案對監控是一個大災難,不便於分析排查,需要定期的進行日誌檔案的切割。

日誌分割指令碼 ```js vim fenge.sh

!/bin/bash

nginx日誌分割,按時間分割

顯示前一天的時間

day=$(date -d "-1 day" "+%Y%m%d")

舊日誌檔案目錄

logs_path="/var/log/nginx"

nginx程序的PID  pid_path="/usr/local/nginx/logs/nginx.pid"

如果舊日誌目錄不存在,則建立日誌檔案目錄

[ -d $logs_path ] || mkdir -p $logs_path  

將日誌移動到舊日誌目錄,並重命名日誌檔案

mv /usr/local/nginx/logs/access.log ${logs_path}/tt.com-access.log-$day  

重建新日誌檔案

kill -USR1 $(cat $pid_path)

刪除30天之前的日誌檔案

find $logs_path -mtime +30 -exec rm -rf {} ;

```

image.png

image.png

image.png

設定連線超時時間

HTTP有一個KeepAlive模式,它告訴web伺服器在處理完一個請求後保持這個TCP連線的開啟狀態。若接收到來自同一客戶端的其它請求,服務端會利用這個未被關閉的連線,而不需要再建立一個連線。\ KeepAlive 在一段時間內保持開啟狀態,它們會在這段時間內佔用資源。佔用過多就會影響效能。\ 在企業網站中,為了避免同一個客戶長時間佔用連線,造成資源浪費,可設定相應的連線超時引數,實現控制連線訪問時間。可以修改配置檔案 nginx.conf,設定 keepalive_timeout超時。

js  vim /usr/local/nginx/conf/nginx.conf  http {  ......     keepalive_timeout 65 180;       設定連線超時時間         client_header_timeout 80;     client_body_timeout 80;  ......  } 重啟服務  systemctl restart nginx

image.png

image.png

更改工作程序數

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

```js 檢視cpu核數  cat /proc/cpuinfo |grep processor|wc -l 或 cat /proc/cpuinfo |grep -c processor 或 cat /proc/cpuinfo | grep -c "physical id"

檢視ginx主程序中包含幾個工作程序  ps aux | grep nginx

編輯配置檔案,修改工作程序數  vim /usr/local/nginx/conf/nginx.conf  worker_processes  2; #修改為與CPU核數相同  worker_cpu_affinity 01 10; #設定每個程序由不同cpu處理,程序數配為4時0001 0010 0100 1000

重啟服務,檢視修改後的工作程序  systemctl restart nginx  ps aux | grep nginx ```

image.png

防盜鏈

在企業網站服務中,一般都要配置防盜鏈功能,以避免網站內容被非法盜用,造成經濟損失,也避免了不必要的頻寬浪費。\ Nginx 的防盜鏈功能也非常強大,在預設情況下,只需要進行很簡單的配置,即可實現防盜鏈處理。

配置防盜鏈

```js 配置盜鏈網站 切換到站點目錄  cd /usr/local/nginx/html

配置首頁檔案,圖片盜用Web源主機中的圖片資源  vim index.html      

test

   

新增IP和域名的對映關係  echo "192.168.142.20 www.apple.com" >> /etc/hosts  echo "192.168.142.30 www.banana.com" >> /etc/hosts

在盜圖網站主機上進行瀏覽器檢視

設定防盜鏈  vim /usr/local/nginx/conf/nginx.conf  http {  ......   server {   ......  不是由tt.com域名請求的圖片資源,重寫到盜鏈圖片error.png   location ~ .(jpg|gif|swf)$ { root html; expires 1d; valid_referers none blocked .apple.com apple.com; if ( $invalid_referer ) { rewrite ^/ http://www.apple.com/error.png; }         }   ......   }  }

systemctl restart nginx ```

image.png

image.png

image.png

image.png

image.png

image.png