Nginx——優化與防盜鏈

DingLiZhe07發表於2020-12-01

一.配置Ngin隱藏版本號

1.隱藏版本號,避免安全漏洞
2.Nginx隱藏版本號方法
   修改配置法
   修改原始碼法

二.修改配置檔案法

1.將Nginx配置檔案中server-tokens選項改為off

 []vim /usr/local/nginx/conf/nginx.conf

在這裡插入圖片描述

 []nginx -t;    //檢查語法

2.重啟服務,訪問網路使用curl -I http://localhost命令檢測

[]systemctl restart nginx

在這裡插入圖片描述

3.方法二

vim /usr/local/nginx/conf/nginx.conf
http{
server_tokens on;           //修改此選項為on
}

vim /opt/nginx-1.12.2/src/core/nginx.h
在這裡插入圖片描述
cd /opt/nginx-1.12.2
make && make install
使用curl -I http://localhost命令檢測
在這裡插入圖片描述

三.修改Nginx使用者和組

1.Nginx執行時程式需要有使用者和組的支援,以實現對網站檔案的讀取進行訪問控制。

2.Nginx預設使用Nobody使用者賬號與組賬號。

3.修改方法

   編譯安裝時指定使用者和組
   修改配置檔案指定使用者和組

4.編譯安裝時指定

   ./configure  --user=nginx  --group=nginx

5.修改配置檔案法指定

  1.建立新的使用者賬號,如nginx
  2.修改主配置檔案user選項,指定使用者賬號和組賬號
  3.重啟nginx服務,使配置生效
  4.使用ps aux命令檢視nginx的程式資訊,驗證執行使用者賬號改變效果。

 命令過程:
 vim /usr/local/nginx/conf/nginx.conf

在這裡插入圖片描述
ps aux | grep nginx ##檢視效果
在這裡插入圖片描述

四.配置Nginx網頁快取時間

1.配置意義

 當Nginx將網頁資料返回給客戶端後,可設定快取時間,以方便在日後進行相同內容的請求時,避免重複請求,加快訪問速度。

2.一般針對的時靜態網頁設定,對動態網頁不設定快取時間。

3.配置過程

     []vim /usr/local/nginx/conf/nginx.conf
     location ~\.(gif|jpg|jepg|png|bmp|ico)${
                     root html;
                     expires 1d;               //快取時間一天
     }
     
     cd /user/loca/nginx/html
     vi index.html
     <img src="a.png.png" />                //在body裡面加入
     systemctl restart nginx

4.測試

  在瀏覽器裡面輸入IP地址,使用抓包工具進行抓。

在這裡插入圖片描述
在這裡插入圖片描述

5.設定方法

       修改配置檔案,在http段,或者server段,或者location段加如特點內容的過期引數。

五. 實現Nginx的日誌分割

1.隨著Nginx執行時間的增加,日誌也會增加,為了方便掌握Nginx執行狀態,需要時刻關注Nginx日誌檔案。
2.太大的日誌檔案對檢測是一個大災難。
     解決方式:定期進行日誌分割
3.Nginx自身不具備日誌切割處理的能力,但可以通過Nginx訊號控制功能的指令碼實現日誌的自動切割。
4.通過Linux的計劃任務週期性進行日誌切割
5.編寫指令碼進行日誌切割的思路
          1.設定時間變數
          2.設定儲存日誌的路徑
          3.將目前的日誌檔案進行重新命名
          4.重建新日誌檔案
          5.刪除時間過長的檔案
          6.設定cron任務,定期執行指令碼,自動進行日誌分割。

1.配置過程

    []vim /opt/fenge.sh
    #!/bin/bash
    #日誌分割
    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 -HUP $(cat $pid_path)                          //重新載入服務
    find $logs_path -mtime +30 | xargs rm -rf            //強力刪除,-mtime:當修改檔案的內容資料時,就會更新這個時間。
     
                                          // 補充:-exec:刪除後面的內容,加上i,是立即執行的意思
                                         //  例:-exec rm -i {}\

在這裡插入圖片描述

 which sh
   crotab -e
    0   1  *  *  *  /usr/bin/sh     /root/fenge.sh
  //分鐘 時 日 月 星期

在這裡插入圖片描述

六.配置Nginx實現連線超時

為避免同一客戶端長時間佔用連線,造成資源浪費,可設定相應的連線超時引數,實現控制連線訪問的時間。

1.超時引數

 1.keep_header_timeout 65 100:前面引數伺服器主動關閉的超時時間,後面引數是客戶機瀏覽主動關閉的時間。
 2.client_header_timeout 80:等待客戶端傳送請求頭的超時時間,超過傳送408錯誤。
 3.client_body_timeout 80:設定客戶端傳送請求體超時時間。

2.配置命令

vi /etc/nginx.conf

keepalive_timeout  65 180;
client_header_timeout 80;
client_body_timeout 80;

在這裡插入圖片描述

3.測試

重啟服務,在瀏覽器輸入IP地址,使用抓包工具進行抓包。
systemctl stop nginx.service
systemctl start nginx.service
在這裡插入圖片描述

七.更改Nginx執行程式數

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

1.配置方式

  修改配置檔案
  修改程式配置引數

2.修改配置檔案的worker_processes引數

  1.一般設為cpu的個數或者核數
  2.在高併發情況下可設定為cpu個數或者或者核數的2倍

3.增加程式數,可減少系統的開銷,提升服務速度。

4.配置命令

vi /usr/local/nginx/conf/nginx.conf
在這裡插入圖片描述
ulimit -u 65535 >> /etc/rc.local //修改最大限制
nginx -t //檢查語法

5.驗證

systemctl restart nginx.service
ps aux | grep nginx

在這裡插入圖片描述

八.配置網頁壓縮功能

1.Nginx的ngx_http_gizp_module壓縮模組提供對檔案內容壓縮的功能。
2.允許Nginx伺服器將輸出內容在傳送客戶端之前進行壓縮,以節約網路的頻寬,提升使用者的訪問體驗,預設已經安裝。
3.可在配置檔案中加入相應的壓縮功能引數對壓縮效能進行優化。

1.壓縮引數

1.gzip on:開啟gzip壓縮輸出
2.gzip_min_length 1k:設定允許壓縮的頁面最小位元組數
3.gzip_buffers 4 16k:申請4個單位為16k的記憶體作為壓縮結果 流快取,預設值是申請與原始資料大小相同的記憶體空間來儲存 gzip壓縮結果
4.gzip_http_version 1.0:設定識別http協議版本,預設是1.1,目前大部分瀏覽器已經支援gzip解壓,但處理較慢,也比較消耗伺服器CPU資源
5.gzip_comp_level 2:指定gzip壓縮比,1壓縮比最小,處理速度最快;9壓縮比最大,傳輸速度快,但處理速度最慢 。              
6.gzip_types text/plain:壓縮型別,對哪些網頁文件啟用壓縮功能
7.gzip_vary on:讓前端快取伺服器快取經過gzip壓縮的頁面

2.配置命令

vim /usr/local/nginx/conf/nginx.conf
gzip  on;                       //開啟gzip壓縮功能
gzip_min_length 1k;        //壓縮閾值
gzip_buffers 4 16k;        //buffer 大小為4個16k緩衝區
gzip_http_version 1.1;    //壓縮版本
gzip_comp_level 6;      //壓縮比率,最小為1,最大為9

gzip_types text/plain application/x-javascript text/css image/jpg image/jpeg image/png image/gif application/xml text/javascript application/x-httpd-php application/ javascript application/json;

gzip_disable "MSIE [1-6]\.";       //配置禁用gzip條件,支援正則,表示ie6以下的不啟用gzip
gzip_vary on;      //選擇支援very header 可以讓前端的快取伺服器快取經過gzip壓縮的頁面。

nginx -t            //測試語法
systemctl restart nginx     //重啟服務

3.測試

瀏覽器輸入IP地址,使用抓包工具進行抓包。

在這裡插入圖片描述

九.配置Nginx防盜鏈

1.配置說明

1. ~*\.(jpg|gif|swf)$:匹配以.jpg或.gif或.swf結尾的不區分大小寫的檔案
2.valid_referers:設定信任的網站,即能引用相應圖片的網站                  
3.網址或者域名: referer中包含相關字串的網址
4.if語句:如果連結的來源域名不在valid_referers所列出的列表中,$invalid_referer為1,則執行後面的操作,即進行重寫或返回403頁面

2.配置命令

vim /usr/local/nginx/conf/nginx.conf
location ~* \.(gif|swf||jpg)$ {
       valid_referers none blocked *.aa.com aa.com 192.168.52.13;
       if ($invalid_referer) {
       rewrite ^/ http://www.aa.com/error.png;
       }

在這裡插入圖片描述

相關文章