Linux筆記:高併發下的Web架構之代理與負載均衡與Nginx配置

代理

所謂代理就是讓別人幫你辦事,將結果反饋給你。

1 ) 正向代理(Proxy)

  • 是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),然後代理向原始服務器轉交請求並將獲得的內容返回給客戶端。
  • 例如:你無法去國外,讓能出國的朋友去國外購買商品後再轉交給你。
  • 例如:中國無法訪問google.com, 我們通過代理服務器訪問google,之後代理服務器把結果返回給你
  • 再比如:路人甲缺錢想找馬老師借錢,路人甲無法聯繫馬老師但與劉老師比較熟,而劉老師和馬老師比較熟, 路人甲委託劉老師在馬老師那裏借到了錢(馬老師並不知道錢是路人甲借的)

2 ) 反向代理(Reverse Proxy)

  • 服務器位於用戶與目標服務器之間,但是對於用戶而言,反向代理服務器就相當於目標服務器,即用戶直接訪問反向代理服務器就可以獲得目標服務器的資源。同時,用戶不需要知道目標服務器的地址,也無須在用戶端作任何設定。反向代理服務器通常可用來作爲Web加速,即使用反向代理作爲Web服務器的前置機來降低網絡和服務器的負載,提高訪問效率。
  • 例如:撥打中國電信客服電話10000,每一次爲你服務的客服都可能不是一個人, 我們並不關心他們內部如何運作, 那麼中國電信10000對於你來說就是反向代理了。
  • 例如:我們訪問百度,其實百度是由多臺服務器構成的,我們並不知道是哪一臺服務器響應我們的,www.baidu.com 域名對應的服務器對於我們電腦來說就是反向代理。
  • 怎樣讓後端的服務器均衡的提供服務,才能充分利用資源, 這就是我們說的負載均衡技術。

3 ) 兩者區別

  • 正向代理代理的對象是客戶端,它隱藏了真實的請求客戶端,服務端不知道真實的客戶端是誰,客戶端請求的服務都被代理服務器代替來請求
  • 反向代理代理的對象是服務端,反向代理服務器會幫我們把請求轉發到真實的服務器那裏去。Nginx就是性能非常好的反向代理服務器,用來做負載均衡。

負載均衡

1 ) 概念

  • 通過某種負載分擔技術,將外部發送來的請求均勻的分配到對稱結構中的某一臺服務器上,而接收到請求的服務器獨立第迴應客戶的請求

2 ) 實現

  • 硬件負載均衡
    • 買一臺相關的設備即可幫我們實現負載均衡
    • 代表廠商:F5、NetScaler、Radware、Array
    • 劣勢:設備、服務費昂貴,難以擴展功能和容量, 靈活性差
  • 軟件負載均衡
    • Nginx: 輕量級Web服務器/反向代理服務器
    • Ngin特點:工作在網絡的七層之上, 對網絡依賴很小, 併發大性能不凡
  • 基於DNS的負載均衡

Nginx的安裝與管理

1 ) 安裝

  • $apt update
  • $apt install -y nginx
  • $nginx -V 查看版本

2 ) 服務管理

  • $service nginx start
  • $service nginx stop
  • $service nginx restart

3 ) 修改配置

  • $nginx -t 修改配置文件後, 用於測試配置文件是否存在問題
  • $nginx -s reload 修改配置文件後,用於重新加載配置文件使之生效

Nginx配置文件的修改

  • 修改主配置文件 $vi /etc/nginx/nginx.conf

    user                www-data;
    worker_processes    auto;
    pid                 /run/nginx.pid;
    events {
        worker_connctions   1000;
    }
    http {
        gzip            on;
        access_log      /var/log/nginx/access.log;
        error_log       /var/log/nginx/error.log;
        include         /etc/nginx/conf.d/*.conf;
        include         /etc/nginx/sites-enabled/*;
    }
    
    • user 表示nginx將以什麼用戶身份來運行它的進程,涉及到權限的時候,要針對該用戶進行配置權限
    • worker_processes 表示工作進程數,默認是自動,一般可以根據cpu的核心數來設置這個進程數,特殊情況下也可以設置成cpu核心數的2倍
    • pid 表示 nginx啓動的進程id
    • worker_connctions 表示一個work可以處理多少個併發,如果worker_processes配置了8個,worker_connctions配置成了1000,那麼nginx最大併發數是8000
    • gzip 表示網頁壓縮,默認開啓,不開啓網頁流量會更大
    • access_log 表示成功訪問日誌
    • error_log 表示失敗訪問日誌
    • include 導入其他的配置文件
  • nginx的server的配置 $vi /etc/nginx/sites-enabled/default

    server {
        listen        80;
        root          /var/www/html;
        index         index.html index.htm;
        server_name   _;
        location / {
            try_files $uri $uri/ =404;
        }
    }
    
    • listen: nginx監聽的端口,一般是80, 也就是瀏覽器瀏覽網頁的默認端口
    • root: 指定網站的根目錄在哪裏
    • index: 表示在瀏覽器中如果沒有輸入要訪問的文件默認去讀取某一個文件
    • server_name: 表示服務器的名字, 通常會填寫我們的域名
    • try_files: 表示將url中輸入的uri當做文件來查找, 如果沒有當做目錄來查找,再沒有就返回404
  • 注意nginx的每一個配置項都要以;結束

發佈了410 篇原創文章 · 獲贊 221 · 訪問量 69萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章