首頁

目前文章總數:157 篇

  

最後更新:2024年 12月 07日

0061. Windows 作業系統下的 Nginx 伺服器負載平衡架設方法(Server Load Balancer, SLB)

日期:2024年 01月 14日

標籤: C# Asp.net Core Web MVC Web Nginx Load Balancer

摘要:C# 學習筆記


應用所需:1. Visual Studio 2022 以上,支援.net Core 6 WebSite
解決問題:1. 如何在 Windows 下將兩台以上的 Web網站使用 Nginx 的負載平衡
基本介紹:本篇分為三大部分。
第一部分:Windows for nginx 安裝
第二部分:設定Nginx檔案
第三部分:部署多個網站 & Demo






第一部分:Windows for nginx 安裝

Step 1:下載Nginx

連結到Windows For Nginx官方下載頁
選擇Stable Version 版本下載,目前是 1.24 ,下載後是一個壓縮包

Step 2:解壓縮

解壓縮到一個目錄下
※避免用符號、中文、建議用純英文當路徑

Step 3:命令提示字元-執行

開啟命令提式字元,輸入以下,即可執行

nginx 



Step 4:確認啟動Nginx

開啟瀏覽器 -> 輸入以下 Url -> 可以看到nginx 已經啟動了

http://localhost:80


如果沒有啟動,先確認IIS 是否有80 Port重複了

Step 5:常駐程式

打開工作管理員,可以發現 Windows 版本的 Nginx在執行時就會常駐



第二部分:設定Nginx檔案

Step 1:打開設定檔案

到 nginx 的目錄下,開啟 nginx.conf 檔案。

Step 2:設定伺服器

我們架設雙伺服器,6001 與 6002 ,入口統一都是 6055

    # 負載平衡導向到的伺服器
	upstream backend {
        server localhost:6001;
        server localhost:6002;
    }

    # 主要開出的端口,統一由此進入
    server {
        listen 6055;

        location / {
            proxy_pass http://backend;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
        }
    }





第三部分:部署多個網站 & Demo

Step 1:網站Port 6001 - 部署設定

我們部署了預設的 Asp.net Core MVC WebSite的網站,並且放在 web1 資料夾下
然後在 json設定檔案設定為 主機A 當辨識用

Step 2:網站Port 6001 - 啟動

打開命令提示字元 -> 輸入以下 -> 啟動網站

dotnet TestWebSite.dll --urls=http://localhost:6001


Web1 使用的 Port:6001

Step 3:網站Port 6002 - 部署設定

接著部署 web2 ,將檔案放在資料夾下
json設定檔案設定為 主機B 當辨識用

Step 4:網站Port 6002 - 啟動

打開命令提示字元 -> 輸入以下 -> 啟動網站

dotnet TestWebSite.dll --urls=http://localhost:6002


Web2 使用的 Port:6002
可以看到 web1、web2 同時啟動

Step 5:打開Nginx

先打開工作管理員 -> 關閉舊的 nginx.exe -> 然後再次執行 nginx

Step 6:負載平衡 - 打開瀏覽器測試

打開任意瀏覽器,輸入以下 Url ,走向到負載平衡的主頁

http://localhost:6055


可以看到成功連結到網站

Step 7:負載平衡 - 確認成功

在此網頁上,瘋狂的按F5 (重新整理網站)

http://localhost:6055


可以發現每次都會讓 Nginx 的負載平衡分流到 web1(6001) 或 web2(6002)。完成 Nginx 負載平衡。