0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

nginx使用學(xué)習(xí)之正、反向代理

科技綠洲 ? 來源:Linux開發(fā)架構(gòu)之路 ? 作者:Linux開發(fā)架構(gòu)之路 ? 2023-11-13 10:54 ? 次閱讀

Nginx 不僅可以做反向代理,實(shí)現(xiàn)負(fù)載均衡。還能用作正向代理來進(jìn)行上網(wǎng)等功能。正向代理:如果把局域網(wǎng)外的 Internet 想象成一個(gè)巨大的資源庫(kù),則局域網(wǎng)中的客戶端要訪 問 Internet,則需要通過代理服務(wù)器來訪問,這種代理服務(wù)就稱為正向代理。

  • 簡(jiǎn)單一點(diǎn):通過代理服務(wù)器來訪問服務(wù)器的過程 就叫 正向代理。
  • 需要在客戶端配置代理服務(wù)器進(jìn)行指定網(wǎng)站訪問

圖片

反向代理

反向代理,其實(shí)客戶端對(duì)代理是無感知的,因?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í)例

  1. 實(shí)現(xiàn)效果

打開瀏覽器,在瀏覽器地址欄輸入地址 www.123.com,跳轉(zhuǎn)到 liunx 系統(tǒng) tomcat 主頁(yè) 面中

  1. 準(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)中通過瀏覽器訪問 tomcat 服務(wù)器
別忘了開啟tomcat,在bin目錄下,使用 命令:

./startup.sh

圖片

  1. 訪問過程的分析

圖片

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ù)器,也就是我們所說的負(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ī) 器的物理性能來解決此問題,但是我們知道摩爾定律的日益失效,硬件的性能提升已經(jīng)不能 滿足日益提升的需求了。最明顯的一個(gè)例子,天貓雙十一當(dāng)天,某個(gè)熱銷商品的瞬時(shí)訪問量 是極其龐大的,那么類似上面的系統(tǒng)架構(gòu),將機(jī)器都增加到現(xiàn)有的頂級(jí)物理配置,都是不能 夠滿足需求的。那么怎么辦呢?上面的分析我們?nèi)サ袅嗽黾臃?wù)器物理配置來解決問題的辦法,也就是說縱向解決問題 的辦法行不通了,那么橫向增加服務(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ù)器,也就是我們 所說的負(fù)載均衡

圖片

圖片

Nginx 負(fù)載均衡 配置實(shí)例

  1. 實(shí)現(xiàn)效果

瀏覽器地址欄輸入地址
http://208.208.128.122/edu/a.html,負(fù)載均衡效果,平均 8081 和 8082 端口中

  1. 準(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

圖片

  1. 在 nginx 的配置文件中進(jìn)行負(fù)載均衡的配置

修改了第一個(gè)示例的 配置

圖片

  1. 最終測(cè)試

測(cè)試url

http://208.208.128.122/edu/a.html

圖片

圖片

  1. 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í)間來分配請(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;
 }
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    6760

    瀏覽量

    88618
  • 服務(wù)器
    +關(guān)注

    關(guān)注

    12

    文章

    8849

    瀏覽量

    84950
  • 局域網(wǎng)
    +關(guān)注

    關(guān)注

    5

    文章

    734

    瀏覽量

    46204
  • nginx
    +關(guān)注

    關(guān)注

    0

    文章

    141

    瀏覽量

    12146
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Nginx的正向代理反向代理

    Nginx認(rèn)識(shí)以及配置
    發(fā)表于 05-10 16:58

    采用Nginx反向代理解決跨域

    40Nginx反向代理功能解決跨域問題
    發(fā)表于 10-10 10:58

    主要學(xué)習(xí)nginx的安裝配置

    處理。因?yàn)橛辛酥虚g件,使得大型網(wǎng)站在規(guī)劃有了更好的層次性,維護(hù)上更加方便。也可以實(shí)現(xiàn)負(fù)載均衡、安全防護(hù)等。Nginx是一個(gè)開源高性能、可靠的HTTP中間件、代理服務(wù),在目前企業(yè)中得到了很大的利用。今天
    發(fā)表于 10-19 14:12

    Apache與Nginx 簡(jiǎn)單對(duì)比 以及Nginx 基本使用方法

    Nginx (engine x) 是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)目前運(yùn)維必備的工具之一。
    的頭像 發(fā)表于 01-31 14:42 ?8226次閱讀
    Apache與<b class='flag-5'>Nginx</b> 簡(jiǎn)單對(duì)比  以及<b class='flag-5'>Nginx</b> 基本使用方法

    介紹一款輕量級(jí)的Web服務(wù)器、反向代理服務(wù)器Nginx

    所謂反向代理,很簡(jiǎn)單,其實(shí)就是在location這一段配置中的root替換成proxy_pass即可。root說明是靜態(tài)資源,可以由Nginx進(jìn)行返回;而proxy_pass說明是動(dòng)態(tài)請(qǐng)求,需要進(jìn)行轉(zhuǎn)發(fā),比如
    的頭像 發(fā)表于 03-26 10:36 ?1w次閱讀
    介紹一款輕量級(jí)的Web服務(wù)器、<b class='flag-5'>反向</b><b class='flag-5'>代理</b>服務(wù)器<b class='flag-5'>Nginx</b>

    Nginx架構(gòu)介紹 Nginx服務(wù)器模型分析

    Nginx是一款免費(fèi)的、開源的、高性能、模塊化、輕量級(jí)的HTTP服務(wù)器、反向代理服務(wù)器以及電子郵件(IMAP/POP3)代理服務(wù)器。
    的頭像 發(fā)表于 01-10 16:32 ?9134次閱讀
    <b class='flag-5'>Nginx</b>架構(gòu)介紹 <b class='flag-5'>Nginx</b>服務(wù)器模型分析

    正向代理反向代理的區(qū)別

    Nginx作為時(shí)下最流行的HTTP服務(wù)器之一,同時(shí)它是一個(gè)反向代理服務(wù)器,提到反向代理服務(wù)器,有同學(xué)可能覺得這個(gè)概念很模糊,如果說到
    的頭像 發(fā)表于 05-03 17:42 ?3465次閱讀
    正向<b class='flag-5'>代理</b>和<b class='flag-5'>反向</b><b class='flag-5'>代理</b>的區(qū)別

    Nginx的詳細(xì)知識(shí)點(diǎn)講解

    Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好 ngi
    的頭像 發(fā)表于 12-26 10:25 ?2521次閱讀
    <b class='flag-5'>Nginx</b>的詳細(xì)知識(shí)點(diǎn)講解

    如何徹底搞懂Nginx知識(shí)網(wǎng)結(jié)構(gòu)

    1.Nginx知識(shí)網(wǎng)結(jié)構(gòu)圖 Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在
    的頭像 發(fā)表于 05-03 14:15 ?1604次閱讀
    如何徹底搞懂<b class='flag-5'>Nginx</b>知識(shí)網(wǎng)結(jié)構(gòu)

    apache反向代理和負(fù)載均衡總結(jié)

    apache反向代理和負(fù)載均衡總結(jié)(5g電源技術(shù)要求)-apache反向代理和負(fù)載均衡總結(jié) ? ? ? ? ? ? ? ?
    發(fā)表于 08-31 12:27 ?0次下載
    apache<b class='flag-5'>反向</b><b class='flag-5'>代理</b>和負(fù)載均衡總結(jié)

    詳解Nginx高性能的HTTP和反向代理服務(wù)器

    Nginx 是一個(gè)高性能的 HTTP 和反向代理服務(wù)器,特點(diǎn)是占用內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上 Nginx 的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好。
    的頭像 發(fā)表于 03-16 11:23 ?2355次閱讀

    Nginx目錄結(jié)構(gòu)有哪些

    什么是NginxNginx是一個(gè) 輕量級(jí)/高性能的反向代理Web服務(wù)器,他實(shí)現(xiàn)非常高效的反向代理
    的頭像 發(fā)表于 11-11 11:27 ?567次閱讀
    <b class='flag-5'>Nginx</b>目錄結(jié)構(gòu)有哪些

    Nginx 如何實(shí)現(xiàn)高性能低消耗

    Nginx 是一個(gè)輕量級(jí)的HTTP 服務(wù)程序,相比其他服務(wù)器程序如Apache,Nginx占用內(nèi)存少,穩(wěn)定性高,并發(fā)處理能力強(qiáng)。同時(shí)Nginx 還是一個(gè)反向
    的頭像 發(fā)表于 11-11 11:31 ?523次閱讀
    <b class='flag-5'>Nginx</b> 如何實(shí)現(xiàn)高性能低消耗

    Nginx的配置文件如何設(shè)置頭信息保留真實(shí)IP不丟失

    Nginx 配置中設(shè)置頭信息以保留客戶端的真實(shí) IP 地址通常是在使用反向代理的場(chǎng)景中需要的。當(dāng) Nginx 作為反向
    的頭像 發(fā)表于 11-30 10:54 ?1701次閱讀

    如何使用nginx反向代理功能?保姆級(jí)教程!

    一關(guān)于nginxnginx是一款高性能的開源Web服務(wù)器軟件,也可以用于反向代理、負(fù)載均衡等,并且具有高性能、低內(nèi)存消耗等優(yōu)點(diǎn)。本文我們主要講解關(guān)于nginx反向
    的頭像 發(fā)表于 06-21 08:21 ?496次閱讀
    如何使用<b class='flag-5'>nginx</b><b class='flag-5'>反向</b><b class='flag-5'>代理</b>功能?保姆級(jí)教程!