Nginx反向代理+Go服務實踐

前言

在後端開發期間,會爲前端或者平臺上提供API服務接口,這時、我們看完今天的文章可以詳細瞭解到Nginx反向代理到後端服務上的過程。

Nginx:

是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務。可以做反向代理、正向代理,靜態服務器等。

負載均衡算法:

upstrem支持4種負載均衡調度算法:

  1. 輪詢(weight):每個請求按時間順序逐一分配到不同的後端服務器上,默認爲輪詢方式
  2. url_hash:按訪問URL的Hash來分配請求
  3. ip_hash:按訪問IP的Hash來分配請求,如果用戶的ip固定不變,也同時可以解決session的問題
  4. fair:根據頁面大小和加載時間智能的分配請求,響應時間短的優先分配

反向代理:

客戶端-->代理<-->服務端

舉例說明:

比如在北京租房子,我們就好比客戶端,我愛我家中介好比代理,實際上我們不一定能看到房主(服務端)

我們在租房子的過程中,知道中介是誰,但是不知道房主是誰。

服務器三臺:

  1. server 192.168.0.1
  2. server 192.168.0.2
  3. server 192.168.0.3

webApi服務:

Go語言基於gin框架開發的HTTP服務,服務啓動監聽10080端口號

/usr/local/brand/bin/webApi --config-dir=/usr/local/webApi/config api

Nginx配置:

# 進程數,一般情況下與CPU個數一致

# 進程數,一般情況下與CPU個數一致
worker_processes  24;

events {
    use epoll;
    #單個worker process進程的最大併發鏈接數
    worker_connections  65535;
}

http {
    # 其他配置省略
    include vhosts/api.test.com.conf;
}

api.test.com.conf配置:

server_name爲api.test.com,監聽80端口,將所有請求轉發到http://192.168.0.*:10080下面

cat /usr/local/nginx/conf/vhost/api.test.com.conf

# 配置負載均衡,均衡負責輪詢的方式進行負載
upstream api.test.com {
    # server 要代理到的服務器節點,weight是輪詢的權重
    server 192.168.0.1:10080 weight=1;
    server 192.168.0.2:10080 weight=1;
    server 192.168.0.3:10080 weight=1;
}

server {
    listen       80;
    server_name  api.test.com;

    access_log  /data/log/nginx/api.test.com.access.log;
    error_log  /data/log/nginx/api.test.com.error.log;

    location / {
        # proxy_pass 要注意如何url以"/"結尾,則表示絕對路徑,否則表示相對路徑
        proxy_pass http://api.test.com;
    }
}

我們請求後返回:http://api.test.com/d/a?page=1&page_size=20,對應的結果有5條記錄,這個時候已經說明請求是成功的。

Nginx訪問日誌如下:

==> /data/log/nginx/api.test.com.access.log <==
192.168.0.123 - - [22/Apr/2020:22:01:01 +0800] "GET /d/a?page=1&page_size=20 HTTP/1.1" 200 656 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.92 Safari/537.36"

已經成功的訪問到了我們的Nginx+Go服務。

總結

本文中實踐了Nginx代理到後端Go服務的知識,部署簡單,實用。

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章