Nginx 不僅可以做反向代理,實(shí)現(xiàn)負(fù)載均衡。還能用作正向代理來(lái)進(jìn)行上網(wǎng)等功能。正向代理:如果把局域網(wǎng)外的 Internet 想象成一個(gè)巨大的資源庫(kù),則局域網(wǎng)中的客戶端要訪 問 Internet,則需要通過(guò)代理服務(wù)器來(lái)訪問,這種代理服務(wù)就稱為正向代理。
- 簡(jiǎn)單一點(diǎn):通過(guò)代理服務(wù)器來(lái)訪問服務(wù)器的過(guò)程 就叫 正向代理。
- 需要在客戶端配置代理服務(wù)器進(jìn)行指定網(wǎng)站訪問
反向代理
反向代理,其實(shí)客戶端對(duì)代理是無(wú)感知的,因?yàn)榭蛻舳瞬恍枰魏闻渲镁涂梢栽L問。
我們只 需要將請(qǐng)求發(fā)送到反向代理服務(wù)器,由反向代理服務(wù)器去選擇目標(biāo)服務(wù)器獲取數(shù)據(jù)后,在返 回給客戶端,此時(shí)反向代理服務(wù)器和目標(biāo)服務(wù)器對(duì)外就是一個(gè)服務(wù)器,暴露的是代理服務(wù)器 地址,隱藏了真實(shí)服務(wù)器 IP 地址。
nginx反向代理配置實(shí)例
- 實(shí)現(xiàn)效果
打開瀏覽器,在瀏覽器地址欄輸入地址 www.123.com,跳轉(zhuǎn)到 liunx 系統(tǒng) tomcat 主頁(yè) 面中
- 準(zhǔn)備工作
(1)在 liunx 系統(tǒng)安裝 tomcat,使用默認(rèn)端口 8080,我這里8080被其他應(yīng)用占用,所以我已修改端口為8081。在conf目錄下的server.xml配置文件中,如下,將port改為 8081,其實(shí)下面也有類似的Connector 標(biāo)簽,但是要看protocol協(xié)議為HTTP/1.1的標(biāo)簽修改即可。
< Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" / >
tomcat 安裝文件放到 liunx 系統(tǒng)中,解壓。
Tomcat的路徑:
/usr/feng/apach-tomcat/tomcat8081下
進(jìn)入 tomcat 的 bin 目錄中,./startup.sh 啟動(dòng) tomcat 服務(wù)器。
(2)對(duì)外開放訪問的端口 (我這里不需要)
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd –reload
查看已經(jīng)開放的端口號(hào) firewall-cmd --list-all
(3)在 windows 系統(tǒng)中通過(guò)瀏覽器訪問 tomcat 服務(wù)器
別忘了開啟tomcat,在bin目錄下,使用 命令:
./startup.sh
- 訪問過(guò)程的分析
4、具體配置
a. 第一步 在 windows 系統(tǒng)的 host 文件進(jìn)行域名和 ip 對(duì)應(yīng)關(guān)系的配置
添加內(nèi)容在 host 文件中
b . 第二步 在 nginx 進(jìn)行請(qǐng)求轉(zhuǎn)發(fā)的配置(反向代理配置)
5、最終測(cè)試
如上配置,我們監(jiān)聽 80 端口,訪問域名為 www.123.com,不加端口號(hào)時(shí)默認(rèn)為 80 端口,故 訪問該域名時(shí)會(huì)跳轉(zhuǎn)到 127.0.0.1:8081 路徑上。在瀏覽器端輸入 www.123.com 結(jié)果如下:
負(fù)載均衡
增加服務(wù)器的數(shù)量,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器上的 情況改為將請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,將負(fù)載分發(fā)到不同的服務(wù)器,也就是我們所說(shuō)的負(fù) 載均衡
客戶端發(fā)送多個(gè)請(qǐng)求到服務(wù)器,服務(wù)器處理請(qǐng)求,有一些可能要與數(shù)據(jù)庫(kù)進(jìn)行交互,服 務(wù)器處理完畢后,再將結(jié)果返回給客戶端。
這種架構(gòu)模式對(duì)于早期的系統(tǒng)相對(duì)單一,并發(fā)請(qǐng)求相對(duì)較少的情況下是比較適合的,成 本也低。但是隨著信息數(shù)量的不斷增長(zhǎng),訪問量和數(shù)據(jù)量的飛速增長(zhǎng),以及系統(tǒng)業(yè)務(wù)的復(fù)雜 度增加,這種架構(gòu)會(huì)造成服務(wù)器相應(yīng)客戶端的請(qǐng)求日益緩慢,并發(fā)量特別大的時(shí)候,還容易 造成服務(wù)器直接崩潰。很明顯這是由于服務(wù)器性能的瓶頸造成的問題,那么如何解決這種情 況呢?
我們首先想到的可能是升級(jí)服務(wù)器的配置,比如提高 CPU 執(zhí)行頻率,加大內(nèi)存等提高機(jī) 器的物理性能來(lái)解決此問題,但是我們知道摩爾定律的日益失效,硬件的性能提升已經(jīng)不能 滿足日益提升的需求了。最明顯的一個(gè)例子,天貓雙十一當(dāng)天,某個(gè)熱銷商品的瞬時(shí)訪問量 是極其龐大的,那么類似上面的系統(tǒng)架構(gòu),將機(jī)器都增加到現(xiàn)有的頂級(jí)物理配置,都是不能 夠滿足需求的。那么怎么辦呢?上面的分析我們?nèi)サ袅嗽黾臃?wù)器物理配置來(lái)解決問題的辦法,也就是說(shuō)縱向解決問題 的辦法行不通了,那么橫向增加服務(wù)器的數(shù)量呢?這時(shí)候集群的概念產(chǎn)生了,單個(gè)服務(wù)器解 決不了,我們?cè)黾臃?wù)器的數(shù)量,然后將請(qǐng)求分發(fā)到各個(gè)服務(wù)器上,將原先請(qǐng)求集中到單個(gè)服務(wù)器上的情況改為將請(qǐng)求分發(fā)到多個(gè)服務(wù)器上,將負(fù)載分發(fā)到不同的服務(wù)器,也就是我們 所說(shuō)的負(fù)載均衡
Nginx 負(fù)載均衡 配置實(shí)例
- 實(shí)現(xiàn)效果
瀏覽器地址欄輸入地址
http://208.208.128.122/edu/a.html,負(fù)載均衡效果,平均 8081 和 8082 端口中
- 準(zhǔn)備工作
a.準(zhǔn)備兩臺(tái) tomcat 服務(wù)器
準(zhǔn)備兩臺(tái) tomcat 服務(wù)器,一臺(tái) 8081,一臺(tái) 8082
上面的反向代理第二個(gè)實(shí)例中已經(jīng)配置成功了。但是需要添加點(diǎn)東西,如下哦。
b. 修改一處
在兩臺(tái) tomcat 里面 webapps 目錄中,創(chuàng)建名稱是 edu 文件夾,在 edu 文件夾中創(chuàng)建 頁(yè)面 a.html,用于測(cè)試。
由于第二個(gè)實(shí)例中,8082中有了 edu 的文件夾,所以只在8081 文件夾下創(chuàng)建即可。
然后使用在vod文件下使用命令:
cp a.html ../edu/
即可完成,
查看命令
cd ../edu/ # 進(jìn)入到 edu 目錄下
cat a.html #查看內(nèi)容
c. 測(cè)試頁(yè)面
測(cè)試URL
http://208.208.128.122:8081/edu/a.html
http://208.208.128.122:8082/edu/a.html
- 在 nginx 的配置文件中進(jìn)行負(fù)載均衡的配置
修改了第一個(gè)示例的 配置
- 最終測(cè)試
測(cè)試url
http://208.208.128.122/edu/a.html
- nginx 分配服務(wù)器策略
隨著互聯(lián)網(wǎng)信息的爆炸性增長(zhǎng),負(fù)載均衡(load balance)已經(jīng)不再是一個(gè)很陌生的話題, 顧名思義,負(fù)載均衡即是將負(fù)載分?jǐn)偟讲煌姆?wù)單元,既保證服務(wù)的可用性,又保證響應(yīng) 足夠快,給用戶很好的體驗(yàn)??焖僭鲩L(zhǎng)的訪問量和數(shù)據(jù)流量催生了各式各樣的負(fù)載均衡產(chǎn)品, 很多專業(yè)的負(fù)載均衡硬件提供了很好的功能,但卻價(jià)格不菲,這使得負(fù)載均衡軟件大受歡迎, nginx 就是其中的一個(gè),在 linux 下有 Nginx、LVS、Haproxy 等等服務(wù)可以提供負(fù)載均衡服 務(wù),而且 Nginx 提供了幾種分配方式(策略):
a. 輪詢(默認(rèn))
每個(gè)請(qǐng)求按時(shí)間順序逐一分配到不同的后端服務(wù)器,如果后端服務(wù)器 down 掉,能自動(dòng)剔除。
配置方式:
b. weight
weight 代表權(quán)重, 默認(rèn)為 1,權(quán)重越高被分配的客戶端越多
upstream myserver {
server 208.208.128.122:8081 weight=10; # 在這兒
server 208.208.128.122:8082 weight=10;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
c. ip_hash
ip_hash 每個(gè)請(qǐng)求按訪問 ip 的 hash 結(jié)果分配,這樣每個(gè)訪客固定訪問一個(gè)后端服務(wù)器
upstream myserver {
ip_hash; // 在這兒
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
d. fair(第三方)
fair(第三方),按后端服務(wù)器的響應(yīng)時(shí)間來(lái)分配請(qǐng)求,響應(yīng)時(shí)間短的優(yōu)先分配。
upstream myserver {
server 208.208.128.122:8081 ;
server 208.208.128.122:8082 ;
fair; # 在這兒
}
server {
listen 80;
server_name 208.208.128.122;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
-
數(shù)據(jù)
+關(guān)注
關(guān)注
8文章
7103瀏覽量
89287 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9255瀏覽量
85752 -
局域網(wǎng)
+關(guān)注
關(guān)注
5文章
760瀏覽量
46326 -
nginx
+關(guān)注
關(guān)注
0文章
151瀏覽量
12195
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論