前后端分離項目使用Nginx配置負載均衡


其實Nginx官方文檔有一篇文章專門介紹如何配置負載均衡,見: Using nginx as HTTP load balancer, 非常詳細。這篇博客主要結合前后端異構項目(Asp.Net Core WebApi + Angular/Vue/React等),簡單總結一下Nginx使用及心得。

 

1. 下載安裝啟動Nginx

從官方網站https://nginx.org/en/download.html下載Nginx,需要注意的是:Nginx提供Mainline, Stable, Legacy三個分類版本,學習最新特性用Mainline,生產環境一般用Stable,如有具體版本要求(老版本),可以在Legacy中找到需要的版本,關於版本的更多細參考: NGINX Versioning Explained。至於安裝啟動,可以參考官方文檔:Linux安裝Windows安裝及啟動

 

2. 前端項目配置負載均衡

使用Angular/Vue/React等作為前台項目, 可以使用Nginx作為Web服務器,對同一個項目多部署幾個實例,然后按照官方文檔配置負載均衡即可。

2-1. 簡單創建兩個發布目錄,每個目錄只放置簡單Html標簽及內容的index.html文件,模擬Angular/Vue/React等作為前台發布。為了便與觀察,兩個目錄下的index.html稍有不同。

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 6     <title>Web Pages - 1</title>
 7 </head>
 8 <body>
 9     <h1>Web Pages - 1</h1>    
10 </body>
11 </html>

2-2. 打開Nginx配置文件,修改如下(已刪除其他與本主題不相干配置項),重啟Nginx, 將兩個網站發布一下。

 1     server {
 2         listen       8081;
 3         server_name  localhost;
 4         location / {
 5             # 請注意,雖然Window目錄路徑使用反斜杠(\),但配置文件中的路徑必須替換為UNIX樣式的正斜杠(/)
 6             root   c:/wwwroot/webpage-1;  7             index  index.html index.htm;
 8         }
 9     }
10 
11     server {
12         listen       8082;
13         server_name  localhost;
14         location / {
15             root   c:/wwwroot/webpage-2; 16             index  index.html index.htm;
17         }
18     }

2-3. 配置Nginx負載均衡(在以上配置文件基礎上增加以下配置)

 1  upstream Webpages {
 2         server localhost:8081;
 3         server localhost:8082;
 4     }
 5 
 6     server {
 7         listen       8080;
 8         server_name  localhost;
 9         location / {
10             proxy_pass http://Webpages;
11         }
12     }

 

3. 后端項目配置負載均衡

后端項目(Asp.Net Core WebApi) 不能直接使用Nginx作為Web服務器,需要先使用IIS、Kestrel部署多個實例,或者把項目部署成服務,然后才能使用Nginx配置負載均衡。

 3-1. 假設我們已經使用IIS部署了三個Web API,分別為:localhost:8087,localhost:8088,localhost:8089。和上面類似的,只需在配置文件中相應增加upstream節點和Server節點即可。

    upstream WebApi {
        server localhost:8087;
        server localhost:8088;
        server localhost:8089;
    }

    server {
        listen       8090;
        server_name  localhost;

        location / {
            proxy_pass http://WebApi;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

4. Nginx官方文檔中的一些其他常用參考

1. Nignx overview

2. Beginner's Guide

3. Command-line parameters

4. Configuring HTTPS servers

4. nginx books

5. FAQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM