<p id="rrtt5"></p><ruby id="rrtt5"></ruby>

      系統城裝機大師 - 固鎮縣祥瑞電腦科技銷售部宣傳站!

      當前位置:首頁 > server > anz > 詳細頁面

      Nginx的優化、安全與防盜鏈實例詳解

      時間:2022-10-11來源:系統城裝機大師作者:佚名

      1.Nginx的頁面優化

      1.1 Nginx的網頁壓縮 

       在Nginx的ngx_http_gzip_module壓縮模塊提供對文件內容壓縮的功能。進行相關的配置修改,就能實現Nginx頁面的壓縮,達到節約帶寬,提升用戶訪問速度

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      vim /usr/local/nginx/conf/nginx.conf
      http {
      ..........
      gzip  on;
          gzip_min_length 1k;
          gzip_buffers 4 64k;
          gzip_http_version 1.1;
          gzip_comp_level 6;
          gzip_vary on;
      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;
      }

      重啟服務,進行訪問測試:

      1.2  配置Nginx的圖片緩存 

      當Nginx將網頁數據返回給客戶端后,可設置緩存的時間,以方便在日后進行相同內容的請求時直接返回,避免重復請求,加快了訪問速度。

      一般針對靜態網頁設置,對動態網頁不設置緩存時間。

      1
      2
      3
      4
      5
      6
      7
      8
      vim /usr/local/nginx/conf/nginx.conf
      http {
      .................
       location ~* \.(gif|jpg|jepg|bmp|ico)$ {
                   root html;
                   expires 1d;            
               }
      }

      重啟服務,測試訪問: 

      1.3  Nginx的連接超時設置 

      • HTTP有一個KeepAlive模式,它告訴web服務器在處理完一個請求后保持這個TCP連接的打開狀態。若接收到來自同一客戶端的其它請求,服務端會利用這個未被關閉的連接,而不需要再建立一個連接。
      • KeepAlive 在一段時間內保持打開狀態,它們會在這段時間內占用資源。占用過多就會影響性能。
      • 在企業網站中,為了避免同一個客戶長時間占用連接,造成資源浪費,可設置相應的連接超時參數,實現控制連接訪問時間??梢孕薷呐渲梦募?nginx.conf,設置 keepalive_timeout超時。
      1
      2
      3
      4
      5
      6
      7
      8
      vim /usr/local/nginx/conf/nginx.conf
       http {
       ......
           keepalive_timeout 65 180;       //設置連接超時時間   
           client_header_timeout 80;
           client_body_timeout 80;
       ......
       }
      • 指定KeepAlive的超時時間(timeout) 。指定每個TCP連接最多可以保持多長時間,服務器將會在這個時間后關閉連接。
      • Nginx的默認值是65秒,有些瀏覽器最多只保持60秒,所以可以設定為60秒。若將它設置為0,就禁止了keepalive 連接。
      • 第二個參數(可選的)指定了在響應頭Keep-Alive: timeout=t ime中的time值。這個頭能夠讓一 些瀏覽器主動關閉連接,這樣服務器就不必去關閉連接了。沒有這個參數,Nginx 不會發送Keep- Alive 響應頭。

       重啟服務,訪問測試:

      1.4 Nginx的并發設置

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

      查看cpu的核心數,根據核心數來設置工作進程數

      1
      2
      3
      4
      5
      6
      #1、查看cpu核數
      cat /proc/cpuinfo |grep processor|wc -l

      cat /proc/cpuinfo |grep -c processor

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

      1 [root@localhost html]#ps aux | grep nginx

      修改工作進程核心數 :

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

      測試結果:

      1 [root@localhost html]#ps aux | grep nginx

      2.Nginx的頁面安全

       ——隱藏Nginx的版本號  

      2.1 查看Nginx版本的方式

      方式一:curl模擬訪問獲取

      1 [root@localhost ~]#curl -I 192.168.73.105

      方式二:瀏覽器訪問查看 

       火狐訪問瀏覽器 ,F12查看網絡信息

      2.2 隱藏版本號 

      方法一:修改配置文件,關閉版本號 

      1
      2
      3
      4
      5
      6
      7
      vim /usr/local/nginx/conf/nginx.conf
      http {
          include       mime.types;
          default_type  application/octet-stream;
          server_tokens off;      #添加這一行,關閉版本號
          ......
      }

       

       測試結果:

       方法二:修改源碼文件中的版本號,重新編譯安裝

      1
      2
      3
      4
      5
      6
      7
      8
      cd /opt/nginx-1.12.0/src/core/
      #修改前進行備份
      cp nginx.h  nginx.h.bak
        
      vimn ginx.h
        
      #define NGINX_VERSION      "1.12.0"
      #define NGINX_VER          "nginx/" NGINX_VERSION

      修改完配置后切換到Nginx軟件包中,進行重新編譯安裝 :

      1
      2
      3
      4
      cd /opt/nginx-1.12.0/
      ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module
        
      make -J 2 && make install

      再次修改主配置文件,打開版本號顯示 :

      1
      2
      3
      4
      5
      6
      7
      vim /usr/local/nginx/conf/nginx.conf
       http {
           include       mime.types;
           default_type  application/octet-stream;
           server_tokens on;
           ......
       }

       重啟服務,進行測試:

      3.Nginx的日志分割

      Nginx與apache的不同之處,就是Nginx本身并為設計日志分割工具,所以需要運維人員進行腳本編寫來實現日志分割

      編寫日志分割腳本 

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      cd /opt
      vim cutlogs.sh
        
      #!/bin/bash
        
      #nginx 分割日志腳本
      #用變量day獲取前天日期的時間記錄
      day=$(date -d "-1 day" "+%Y%m%d")
      #獲取日志的目錄
      logs_path="/var/log/nginx"
      #獲取運行時nginx的進程號
      pid_path="/usr/local/nginx/logs/nginx.pid"
      #二元表達式,如果前面不成立則執行后面的式子
      #前面判斷該目錄是否存在,后面則表示不存在則自動創建該目錄
      [ -d $logs_path ] || mkdir -p $logs_path
      #將生成的日志按照date生成的時間格式改名并移動到指定的路徑中保存
      mv /usr/local/nginx/logs/access.log ${logs_path}/access.log-$day
      #重新生成一個新的日志
      kill -USR1 $(cat $pid_path)
      #日志文件清理,將30天前的日志進行清除
      find $logs_path -mtime +30 -exec rm -rf {} \ ;

      2. 執行腳本進行測試

      3. 將日志腳本添加至計劃性任務

      1
      2
      3
      4
      [root@localhost opt]#vim cutlogs.sh
      [root@localhost opt]#chmod +x cutlogs.sh
      [root@localhost opt]#crontab -e
      0 1 * * * /opt/cutlogs.sh

      4.Nginx防盜鏈

      4.1 盜鏈的過程

       Nginx盜鏈的過程與apache一致,均是通過網頁瀏覽,將網站圖片重定向到自己的網站上

      https://www.jb51.net/article/264450.htm

      4.2 Nginx防盜鏈的設置

       修改主配配置文件,添加防盜鏈設置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      vim /usr/local/nginx/conf/nginx.conf
      http {
      ...........
      server{
      ...........
      location ~* \.(jpg|gif|swf)$ {
               root  html;
               expires 1d;
               valid_referers none blocked *.test.com test.com;
               if ( $invalid_referer ) {
                 rewrite ^/ http://www.test.com/error.png;
                 }
              }
      ............
      }
      ...............
      }

       在 /var/local/nginx/html 下放置好error.png 

      進行盜鏈測試 

      盜鏈主機html網頁設置: 

      第三方用戶訪問盜鏈主機:

      訪問前設置:

      1.關閉防火墻工具firewalld和selinux

      2.將域名對應的IP添加到  /etc/hosts 中 

      第三方訪問原主機 :

      5.fpm參數優化

      Nginx的PHP解析功能實現如果是交由FPM處理的,為了提高PHP的處理速度,可對FPM模塊進行參數的調整。

      根據服務器的內存與服務負載,調整FPM模塊參數。

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

      總結

      到此這篇關于Nginx的優化、安全與防盜鏈的文章就介紹到這了

      分享到:

      相關信息

      • aarch64服務器部署mysql的流程分析

        aarch64服務器-部署mysql 1、創建工作目錄 2、編寫docker-compose.yaml 3、編寫數據庫配置文件。 4、啟動 5、測試...

        2022-10-02

      • 解決Navicat 連接服務器不成功的問題

        Navicat 連接服務器不成功(Access denied for user 'root'@ '*.*.*.*' (using password: YES)),出現這種原因一般是服務器的root用戶沒有開啟訪問權限,本文給大家分享解決方法...

        2022-10-02

      系統教程欄目

      欄目熱門教程

      人氣教程排行

      站長推薦

      熱門系統下載

      天堂资源中文WWW,久久精品女人天堂AV免费观看,无码专区一ⅤA亚洲V天堂,免费观看在线AⅤ天堂视频