1. 程式人生 > 其它 >Blog.050 Nginx 服務優化 與 防盜鏈

Blog.050 Nginx 服務優化 與 防盜鏈

本章目錄

1. 隱藏版本號
  1.1 操作步驟
  1.2 操作流程
2. 快取時間
  2.1 操作步驟
  2.2 操作流程
3. 日誌切割
  3.1 操作步驟
  3.2 操作流程
4. 連線超時
  4.1 操作步驟
  4.2 操作流程
5. 更改程序數
  5.1 操作步驟
  5.2 操作流程
6. 配置網頁壓縮
  6.1 操作步驟
  6.2 操作流程
7. 配置防盜鏈
  7.1 操作步驟
  7.2 操作流程
8. fpm 引數優化
  8.1 操作步驟

1. 隱藏版本號
  1.1 操作步驟

    (1)顯示響應報文首部資訊

    可以使用 Fiddler 工具抓取資料包,檢視 Nginx 版本,也可以在 CentOS 中使用命令 curl -I http://192.168.80.200

顯示響應報文首部資訊。

1 curl -I http://192.168.80.200

    (2)修改主配置檔案

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 
 4 ```handlebars
 5 http {
 6     include       mime.types;
 7     default_type  application/octet-stream;
 8     server_tokens off;                                #新增,關閉版本號
 9     ......
10 }
11 
12 systemctl restart nginx
13 curl -I http://192.168.---.---

    (3)再次檢視版本號是否被隱藏
    (4)修改使用者和組

1 vim /usr/local/nginx/conf/nginx.conf
2 
3 user nginx nginx;                                 #取消註釋,修改使用者為 nginx ,組為 nginx
4 
5 systemctl restart nginx
6 curl -I http://192.168.80.10

  1.2 操作流程

    (1)顯示響應報文首部資訊


    (2)修改主配置檔案


    (3)再次檢視版本號是否被隱藏



2. 快取時間
  2.1 操作步驟

  • 在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
  • 選擇 網路 —> 選擇 HTML、WS、其他
  • 訪問 IP ,雙擊200響應訊息檢視響應頭中包含 Cahce-Control:max-age=86400 表示快取時間是 86400 秒。
  • 也就是快取一天的時間,一天之內瀏覽器訪問這個頁面,都是用快取中的資料,而不需要向 Nginx 伺服器重新發出請求,減少了伺服器的使用頻寬。

    (1)修改主配置檔案

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 http {
 4 ......
 5     server {
 6     ...... 
 7         location / {
 8             root html;
 9             index index.html index.htm;
10         }
11         
12         location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {         #加入新的 location,以圖片作為快取物件
13             root html;
14             expires 1d;                                    #指定快取時間,1天
15         }
16 ......
17     }
18 }

    (2)放入圖片並編輯網頁
    (3)檢查配置並重啟服務

1 nginx -t
2 
3 systemctl restart nginx

  2.2 操作流程

    (1)修改主配置檔案


    (2)放入圖片並編輯網頁


    (3)檢查配置並重啟服務


3. 日誌切割
  3.1 操作步驟

    (1)編寫指令碼

 1 vi /opt/test.sh
 2 
 3 #!/bin/bash
 4 # Filename: test.sh
 5 d=$(date -d "-1 day" "+%Y%m%d")                                                #顯示前一天的時間
 6 logs_path="/var/log/nginx"
 7 pid_path="/usr/local/nginx/logs/nginx.pid"
 8 [ -d $logs_path ] || mkdir -p $logs_path                                     #建立日誌檔案目錄
 9 mv /usr/local/nginx/logs/access.log ${logs_path}/kgc.com-access.log-$d        #移動並重命名日誌檔案
10 kill -USR1 $(cat $pid_path)                                                    #重建新日誌檔案
11 find $logs_path -mtime +30 -exec rm -rf {} \;                                #刪除30天之前的日誌檔案
12 #find $logs_path -mtime +30 |xargs rm -rf 

    (2)執行指令碼,檢視日誌是否生成

1 chmod +x /opt/test.sh
2 /opt/test.sh
3 ls /var/log/nginx
4 ls/usr/local/nginx/logs/access.log 
5 
6 crontab -e
7 0 1 * * * /opt/test.sh

    Tips:

  • 在linux作業系統中,每個檔案都有很多的時間引數,其中有三個比較主要,分別是ctime,atime,mtime
  • ctime(status time): 當修改檔案的許可權或者屬性的時候,就會更新這個時間,ctime並不是createtime,更像是change time, 只有當更新檔案的屬性或者許可權的時候才會更新這個時間,但是更改內容的話是不會更新這個時間。
  • atime(accesstime): 當使用這個檔案的時候就會更新這個時間。
  • mtime(modification time):當修改檔案的內容資料的時候,就會更新這個時間,而更改許可權或者屬性,mtime不會改變,這就是和ctime的區別。


  3.2 操作流程

    (1)編寫指令碼


    (2)執行指令碼,檢視日誌是否生成


4. 連線超時
  4.1 操作步驟

    (1)修改主配置檔案

1 vim /usr/local/nginx/conf/nginx.conf
2 
3 http {
4 ...... 
5     keepalive_timeout 65 180;
6     client_header_timeout 80;
7     client_body_timeout 80;
8 ...... 
9 }

    (2)檢查配置並重啟服務

1 nginx -t
2 
3 systemctl restart nginx

  4.2 操作流程

    (1)修改主配置檔案


    (2)檢查配置並重啟服務


5. 更改程序數
  5.1 操作步驟

    (1)檢視 cpu 核數和 nginx 主程序中包含幾個子程序

1 cat /proc/cpuinfo | grep -c "physical id"      #檢視cpu核數
2 ps aux | grep nginx                            #檢視nginx主程序中包含幾個子程序

    (2)修改主配置引數

1 vim /usr/local/nginx/conf/nginx.conf
2 
3 worker_processes  2;                  #修改為核數相同或者2倍
4 worker_cpu_affinity 01 10;            #設定每個程序由不同cpu處理,程序數配為4時0001 0010 0100 1000

    (3)重啟服務並檢視


  5.2 操作流程

    (1)檢視 cpu 核數和 nginx 主程序中包含幾個子程序


    (2)修改主配置引數


    (3)重啟服務並檢視


6. 配置網頁壓縮
  6.1 操作步驟

    (1)修改主配置檔案

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 http {
 4 ...... 
 5    gzip on;                            #取消註釋,開啟gzip壓縮功能
 6    gzip_min_length 1k;                 #最小壓縮檔案大小
 7    gzip_buffers 4 16k;                 #壓縮緩衝區,大小為4個16k緩衝區
 8    gzip_http_version 1.1;              #壓縮版本(預設1.1,前端如果是squid2.5請使用1.0 9    gzip_comp_level 6;                  #壓縮比率
10    gzip_vary on;                       #支援前端快取伺服器儲存壓縮頁面
11    gzip_types text/plain text/javascript application/x-javascript text/css text/xml application/xml application/xml+rss image/jpg image/jpeg image/png image/gif application/x-httpd-php application/javascript application/json;        #壓縮型別,表示哪些網頁文件啟用壓縮功能
12 ...... 
13 }

    (2)修改網頁顯示內容

1 cd /usr/local/nginx/html
2 #先將圖片檔案傳到/usr/local/nginx/html目錄下
3 
4 vim index.html
5 
6 ...... 
7 <img src="1.jpg"/>                #網頁中插入圖片
8 </body>
9 </html>

    (3)重啟服務並測試

    測試:

  • 在Linux系統中,開啟火狐瀏覽器,右擊點檢視元素
  • 選擇 網路 —> 選擇 HTML、WS、其他
  • 訪問 http://192.168.80.10 ,雙擊200響應訊息檢視響應頭中包含 Content-Encoding: gzip

  6.2 操作流程

    (1)修改主配置檔案


    (2)修改網頁顯示內容


    (3)重啟服務並測試


7. 配置防盜鏈
  7.1 操作步驟

    (1)修改主配置檔案

 1 vim /usr/local/nginx/conf/nginx.conf
 2 
 3 http {
 4 ......
 5     server {
 6     ......
 7         location ~*\.(jpg|gif|swf)$ {
 8             valid_referers *.kgc.com kgc.com;
 9             if ( $invalid_referer ) {
10                 rewrite ^/ http://www.kgc.com/3.png;
11                 #return 403;                                # 可以不設防盜鏈,設定返回403
12             }
13         }
14     ......
15     }
16 }

    (2)源主機網頁準備

 1 cd /usr/local/nginx/html
 2 
 3 vim index.html
 4 
 5 ...... 
 6 <img src="1.jpg"/>
 7 </body>
 8 </html>
 9 
10 echo "192.168.---.--- www.kgc.com" >> /etc/hosts 

    (3)源主機臨時新增域名和IP的對映關係
    (4)盜鏈主機網頁準備

 1 cd /var/www/html
 2 
 3 vim index.html
 4 
 5 ...... 
 6 <img src="http://www.kgc.com/1.jpg"/>
 7 </body>
 8 </html>
 9 
10 echo "192.168.---.--- www.kgc.com" >> /etc/hosts 
11 echo "192.168.---.--- www.clj.com" >> /etc/hosts 

    (5)盜鏈主機臨時新增域名和IP的對映關係


  7.2 操作流程

    (1)修改主配置檔案


    (2)源主機網頁準備


    (3)源主機臨時新增域名和IP的對映關係
    (4)盜鏈主機網頁準備


    (5)盜鏈主機臨時新增域名和IP的對映關係
    (6)瀏覽器中驗證


8. fpm 引數優化
  8.1 操作步驟

 1 vim /usr/local/php/etc/php-fpm.conf 
 2 
 3 pid = run/php-fpm.pid
 4 
 5 vim /usr/local/php/etc/php-fpm.d/www.conf
 6 
 7 --96行--
 8 pm = dynamic                  #fpm程序啟動方式,動態的
 9 --107行--
10 pm.max_children=20            #fpm程序啟動的最大程序數
11 --112行--
12 pm.start_servers = 5          #動態方式下啟動時預設開啟的程序數,在最小和最大之間
13 --117行--
14 pm.min_spare_servers = 2      #動態方式下最小空閒程序數
15 --122行--
16 pm.max_spare_servers = 8      #動態方式下最大空閒程序數
17 
18 kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`            #重啟php-fpm
19 netstat -anpt | grep 9000

-