詳解使用Go添加Nginx代理的方法示例
簡(jiǎn)介
Nginx 是一個(gè)高性能的 HTTP 服務(wù)器和反向代理服務(wù)器.
最常用的兩個(gè)功能是反向代理和負(fù)載均衡.
反向代理
反向代理是正向代理的反面.
普通的代理服務(wù)器是需要用戶(hù)主動(dòng)去設(shè)置的, 用戶(hù)在自己的電腦上設(shè)置并連接代理服務(wù)器,
從而可以隱藏自己的 IP, 使得應(yīng)用服務(wù)器不知道客戶(hù)端的 IP 地址.
而反向代理是作為應(yīng)用服務(wù)器的代理, 安裝在服務(wù)器上. 客戶(hù)端實(shí)際上訪問(wèn)的反向代理服務(wù)器,
反向代理服務(wù)器再去訪問(wèn)實(shí)際的應(yīng)用服務(wù)器, 然后將獲取到的響應(yīng)傳送給客戶(hù)端.
使用 Nginx 配置反向代理非常簡(jiǎn)單, 基礎(chǔ)配置如下:
upstream web { server 127.0.0.1:8081; } server { listen 80; server_name web.coolcat.com; location / { proxy_set_header Host $http_host; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 5m; proxy_pass http://web; } }
上面的配置文件中設(shè)置了一個(gè)域名 web.coolcat.com
,
對(duì)這個(gè)域名的所有請(qǐng)求都會(huì)轉(zhuǎn)發(fā)到 http://web
上.
通過(guò)配置 upstream
, 我們可以發(fā)現(xiàn), 實(shí)際上的流量都被轉(zhuǎn)發(fā)到了
127.0.0.1:8081
上了.
如此一來(lái), 就實(shí)現(xiàn)了反向代理.
負(fù)載均衡
負(fù)載均衡和反向代理是分不開(kāi)的, 負(fù)載均衡通常都是基于反向代理做的.
所謂的負(fù)載均衡, 指的是將多個(gè)請(qǐng)求轉(zhuǎn)發(fā)到不同的后端服務(wù)器上.
upstream web { server 127.0.0.1:8081; }
在上面的反向代理配置中, 只設(shè)置了一個(gè)后端服務(wù)器地址,
如果再添加幾個(gè), 就實(shí)現(xiàn)了最簡(jiǎn)單的負(fù)載均衡了.
輪詢(xún)
輪詢(xún)策略按順序分配請(qǐng)求.
upstream web { server 192.168.1.1:8081; server 192.168.1.2:8081; }
加權(quán)輪詢(xún)
加權(quán)策略按比例分配請(qǐng)求.
upstream web { server 192.168.1.1:8081 weight=4; server 192.168.1.2:8081 weight=6; }
上面的兩個(gè)服務(wù)器的訪問(wèn)概率就是四六開(kāi).
最少連接
最少連接將請(qǐng)求分配給當(dāng)前連接數(shù)最少的服務(wù)器.
upstream web { least_conn; server 192.168.1.1:8081; server 192.168.1.2:8081; }
ip_hash
來(lái)自同一個(gè) IP 的連接都會(huì)分配給同一個(gè)服務(wù)器, 通常用于 會(huì)話保持
.
upstream web { ip_hash; server 192.168.1.1:8081; server 192.168.1.2:8081; }
通用 hash
使用 hash 自定義要計(jì)算的 key. 示例中使用請(qǐng)求地址.
可以選擇 consistent
參數(shù)可以指定使用一致性哈希算法.
upstream web { hash $request_uri; # hash $request_uri consistent; server 192.168.1.1:8081; server 192.168.1.2:8081; }
參考:
Using nginx as HTTP load balancer
Module ngx_http_upstream_module
總結(jié)
Nginx 是很常用的代理服務(wù)器, 它的功能非常強(qiáng)大, 性能也很好.
更多的資料請(qǐng)參考官方文檔.
當(dāng)前部分的代碼
作為版本v0.14.0
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
解決golang.org不能訪問(wèn)的問(wèn)題(推薦)
這篇文章主要介紹了解決golang.org不能訪問(wèn)的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-11-11Go?模塊在下游服務(wù)抖動(dòng)恢復(fù)后CPU占用無(wú)法恢復(fù)原因
這篇文章主要為大家介紹了Go?模塊在下游服務(wù)抖動(dòng)恢復(fù)后CPU占用無(wú)法恢復(fù)原因詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱(chēng)和文件行號(hào)等操作
這篇文章主要介紹了Golang 實(shí)現(xiàn)獲取當(dāng)前函數(shù)名稱(chēng)和文件行號(hào)等操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-05-05教你用go語(yǔ)言實(shí)現(xiàn)比特幣交易功能(Transaction)
每一筆比特幣交易都會(huì)創(chuàng)造輸出,輸出都會(huì)被區(qū)塊鏈記錄下來(lái)。給某個(gè)人發(fā)送比特幣,實(shí)際上意味著創(chuàng)造新的 UTXO 并注冊(cè)到那個(gè)人的地址,可以為他所用,今天通過(guò)本文給大家分享go語(yǔ)言實(shí)現(xiàn)比特幣交易功能,一起看看吧2021-05-05golang語(yǔ)言如何將interface轉(zhuǎn)為int, string,slice,struct等類(lèi)型
這篇文章主要介紹了golang語(yǔ)言如何將interface轉(zhuǎn)為int, string,slice,struct等類(lèi)型,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn)
本文主要介紹了goland遠(yuǎn)程調(diào)試k8s上容器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02Go語(yǔ)言實(shí)現(xiàn)圖片快遞信息識(shí)別的簡(jiǎn)易方法
這篇文章主要為大家介紹了Go語(yǔ)言實(shí)現(xiàn)圖片快遞信息識(shí)別的簡(jiǎn)易方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10