1. 程式人生 > 其它 >DTCC 2021 | 華為雲資料庫戰略啟示錄

DTCC 2021 | 華為雲資料庫戰略啟示錄

Nginx使用

參考視訊:https://www.bilibili.com/video/BV1zJ411w7SV?spm_id_from=333.1007

1.正向代理與反向代理

1.1 正向代理

  • 在客戶端(瀏覽器)配置代理伺服器,通過代理伺服器訪問網際網路訪問。

類似於爬蟲中設定的代理IP由客戶端設定。

1.2 反向代理

我們只需要將請求傳送到反向代理伺服器,由反向代理伺服器去選擇目標伺服器獲取資料後,在返回客戶端,此時反向代理伺服器和目標伺服器對外就是一個伺服器,暴露的是代理伺服器的地址,隱藏了真是伺服器的地址。

2.負載均衡

2.1 請求流程

2.2 概述

  • 單個伺服器解決不了,我門增加伺服器的數量,然後將請求分發到各個伺服器上,將原先請求集中到單個伺服器上的情況改為將請求分發到多個伺服器的上,將負載

    分發到不同伺服器上,就是我們所說的負載均衡

3.動靜分離

  • 為了加快網站的解析速度,可以把靜態頁面和動態頁面由不同的伺服器來解析,加快解析速度。將低原來單個伺服器壓力。

4.Nginx中的常用命令

4.1 Linux安裝Nginx

詳情請參考:cnblogs.com/Blogwj123/p/15525270.html

# 通常是使用nginx命令是進入nginx的目錄後使用的

# 1.檢視版本號
./nginx -v

# 2.開始
./nginx

# 3.關閉
./nginx -s stop

# 4.重新載入
./nginx -s reload

# 5.檢視幫助
./nginx -h

5.Nginx的配置檔案

5.1 配置檔案的組成

位置:

5.1.1 全域性塊

  • 從配置檔案的開始到events塊之間的內容,主要設定一些影響nginx伺服器整體執行的配置指令

  • #user  nobody;
    worker_processes  1; # worker_processes值越大,表示支援併發數量越多。
    
    #error_log  logs/error.log;
    #error_log  logs/error.log  notice;
    #error_log  logs/error.log  info;
    
    #pid        logs/nginx.pid;
    

5.1.2 events塊

events塊涉及的指令主要影響Nginx伺服器與使用者網路連線

events {
    worker_connections  1024; # 表示最大連線數。
}

5.1.3 Http塊

  • 這裡是Nginx配置最頻繁的部分,代理、快取和日誌定義的絕大多數功能和第三方模組的配置都在這裡。
  • Http模組下包括http全域性塊Server塊

1.http全域性塊

2.Server塊

6.反向代理實現

6.1 簡單demo

server {
        listen       80;
        server_name  localhost; # 改為IP地址

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
        	proxy_pass http:127.0.0.1:8080;
            index  index.html index.htm;
        }
}

6.2 匹配正則

server {
    listen 9001;
    server_name IP地址;
    location ~/edu/ { # 路徑中包含edu轉發到 8081的地址
        proxy_pass http://127.0.0.1:8080;
    }
    location ~/vod/ { # 路徑中包含vod轉發到 8081的地址
        proxy_pass http://127.0.0.1:8081;
    }
}

6.3 負載均衡

  • 實現效果

  • 配置

    http {
        upstream mysever{
            server 127.0.0.1:8080; # 後面還有weight 代表權重,表示分配到的概率。
            server 127.0.0.1:8080;
        }
        server {
            listen 80;
            server_name 192.168.17.129;
            location / {
                proxy_pass http://myserver;
            }
        }
    }
    
  • nginx提供的分配策略

    1. 輪訓(預設

      每個請求按照時間順序注意分配到不同的後端伺服器,如果後端down掉能自動剔除。

    2. weight

      weight代表權重預設值是1,權重越高被分配的客戶端越多;

      http {
          upstream mysever{
              server 127.0.0.1:8080 weight=1; 
              server 127.0.0.1:8080 weight=3;
          }
          server {
              listen 80;
              server_name 192.168.17.129;
              location / {
                  proxy_pass http://myserver;
              }
          }
      }
      
    3. ip_hash

      每個請求按訪問IP的hash結果分配,這樣每一個訪客固定訪問一個後端伺服器,可以解決session的問題,例如;

      http {
          upstream mysever{
              ip_hash;
              server 127.0.0.1:8080 weight=1; 
              server 127.0.0.1:8080 weight=3;
          }
          server {
              listen 80;
              server_name 192.168.17.129;
              location / {
                  proxy_pass http://myserver;
              }
          }
      }
      
    4. fair(第三方)

      按後端伺服器的響應時間來分配請求,響應時間短的優先分配。

      http {
          upstream mysever{
              server 127.0.0.1:8080 weight=1; 
              server 127.0.0.1:8080 weight=3;
              fair;
          }
          server {
              listen 80;
              server_name 192.168.17.129;
              location / {
                  proxy_pass http://myserver;
              }
          }
      }
      

7.動靜分離實現

7.1 概述

  • 目的:提高訪問效率。
  • 兩種方式

    1.一種是純粹把靜態檔案獨立成單獨的域名,放在獨立的伺服器上釋出,目前主流方式。

    2.動態檔案跟靜態檔案混合在一起釋出,通過nginx來分開,使用較少。

  • 快取

    location的快取時間,結合瀏覽器確認使用。具體間概述。

    不適用與經常更改的靜態資源。

7.2 配置

server {
    listen 9001;
    server_name IP地址;
    location /www { # data目錄下的資料夾 該路徑一般寫成static
        root /data/ ;# root下的資料夾
        index index.html index.htm; # 預設的,根據情況修改。
    }
    location /image/ { #
        root /data/;
        autoindex on; # 顯示靜態資源列表
    }
}

8.高可用

問題:

主從複製 :

  • 需求:
    • 兩臺nginx
    • 需要Keepalived
    • 需要虛擬IP

9.nginx原理

9.1 master-worker

9.2 worker 如何進行工作

9.3 優勢

Nginxredis類似都才用了io多路複用機制;worker數和cpu數量相等比較合適。