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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

nginx使用學習之正、反向代理

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

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

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

圖片

反向代理

反向代理,其實客戶端對代理是無感知的,因為客戶端不需要任何配置就可以訪問。

我們只 需要將請求發(fā)送到反向代理服務器,由反向代理服務器去選擇目標服務器獲取數(shù)據(jù)后,在返 回給客戶端,此時反向代理服務器和目標服務器對外就是一個服務器,暴露的是代理服務器 地址,隱藏了真實服務器 IP 地址。

圖片

nginx反向代理配置實例

  1. 實現(xiàn)效果

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

  1. 準備工作

(1)在 liunx 系統(tǒng)安裝 tomcat,使用默認端口 8080,我這里8080被其他應用占用,所以我已修改端口為8081。在conf目錄下的server.xml配置文件中,如下,將port改為 8081,其實下面也有類似的Connector 標簽,但是要看protocol協(xié)議為HTTP/1.1的標簽修改即可。

< Connector port="8081" protocol="HTTP/1.1"
 connectionTimeout="20000"
 redirectPort="8443" / >

tomcat 安裝文件放到 liunx 系統(tǒng)中,解壓。
Tomcat的路徑:
/usr/feng/apach-tomcat/tomcat8081下

進入 tomcat 的 bin 目錄中,./startup.sh 啟動 tomcat 服務器。

(2)對外開放訪問的端口 (我這里不需要)

firewall-cmd --add-port=8080/tcp --permanent

firewall-cmd –reload

查看已經(jīng)開放的端口號 firewall-cmd --list-all

(3)在 windows 系統(tǒng)中通過瀏覽器訪問 tomcat 服務器
別忘了開啟tomcat,在bin目錄下,使用 命令:

./startup.sh

圖片

  1. 訪問過程的分析

圖片

4、具體配置

a. 第一步 在 windows 系統(tǒng)的 host 文件進行域名和 ip 對應關系的配置

圖片

添加內(nèi)容在 host 文件中

圖片

b . 第二步 在 nginx 進行請求轉(zhuǎn)發(fā)的配置(反向代理配置)

圖片

5、最終測試

如上配置,我們監(jiān)聽 80 端口,訪問域名為 www.123.com,不加端口號時默認為 80 端口,故 訪問該域名時會跳轉(zhuǎn)到 127.0.0.1:8081 路徑上。在瀏覽器端輸入 www.123.com 結(jié)果如下:

圖片

負載均衡

增加服務器的數(shù)量,然后將請求分發(fā)到各個服務器上,將原先請求集中到單個服務器上的 情況改為將請求分發(fā)到多個服務器上,將負載分發(fā)到不同的服務器,也就是我們所說的負 載均衡

客戶端發(fā)送多個請求到服務器,服務器處理請求,有一些可能要與數(shù)據(jù)庫進行交互,服 務器處理完畢后,再將結(jié)果返回給客戶端。

這種架構(gòu)模式對于早期的系統(tǒng)相對單一,并發(fā)請求相對較少的情況下是比較適合的,成 本也低。但是隨著信息數(shù)量的不斷增長,訪問量和數(shù)據(jù)量的飛速增長,以及系統(tǒng)業(yè)務的復雜 度增加,這種架構(gòu)會造成服務器相應客戶端的請求日益緩慢,并發(fā)量特別大的時候,還容易 造成服務器直接崩潰。很明顯這是由于服務器性能的瓶頸造成的問題,那么如何解決這種情 況呢?

我們首先想到的可能是升級服務器的配置,比如提高 CPU 執(zhí)行頻率,加大內(nèi)存等提高機 器的物理性能來解決此問題,但是我們知道摩爾定律的日益失效,硬件的性能提升已經(jīng)不能 滿足日益提升的需求了。最明顯的一個例子,天貓雙十一當天,某個熱銷商品的瞬時訪問量 是極其龐大的,那么類似上面的系統(tǒng)架構(gòu),將機器都增加到現(xiàn)有的頂級物理配置,都是不能 夠滿足需求的。那么怎么辦呢?上面的分析我們?nèi)サ袅嗽黾臃掌魑锢砼渲脕斫鉀Q問題的辦法,也就是說縱向解決問題 的辦法行不通了,那么橫向增加服務器的數(shù)量呢?這時候集群的概念產(chǎn)生了,單個服務器解 決不了,我們增加服務器的數(shù)量,然后將請求分發(fā)到各個服務器上,將原先請求集中到單個服務器上的情況改為將請求分發(fā)到多個服務器上,將負載分發(fā)到不同的服務器,也就是我們 所說的負載均衡

圖片

圖片

Nginx 負載均衡 配置實例

  1. 實現(xiàn)效果

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

  1. 準備工作

a.準備兩臺 tomcat 服務器

準備兩臺 tomcat 服務器,一臺 8081,一臺 8082

上面的反向代理第二個實例中已經(jīng)配置成功了。但是需要添加點東西,如下哦。

b. 修改一處

在兩臺 tomcat 里面 webapps 目錄中,創(chuàng)建名稱是 edu 文件夾,在 edu 文件夾中創(chuàng)建 頁面 a.html,用于測試。

由于第二個實例中,8082中有了 edu 的文件夾,所以只在8081 文件夾下創(chuàng)建即可。
然后使用在vod文件下使用命令:

cp a.html ../edu/

即可完成,
查看命令

cd ../edu/ # 進入到 edu 目錄下
cat a.html #查看內(nèi)容

c. 測試頁面

測試URL

http://208.208.128.122:8081/edu/a.html

圖片

http://208.208.128.122:8082/edu/a.html

圖片

  1. 在 nginx 的配置文件中進行負載均衡的配置

修改了第一個示例的 配置

圖片

  1. 最終測試

測試url

http://208.208.128.122/edu/a.html

圖片

圖片

  1. nginx 分配服務器策略

隨著互聯(lián)網(wǎng)信息的爆炸性增長,負載均衡(load balance)已經(jīng)不再是一個很陌生的話題, 顧名思義,負載均衡即是將負載分攤到不同的服務單元,既保證服務的可用性,又保證響應 足夠快,給用戶很好的體驗??焖僭鲩L的訪問量和數(shù)據(jù)流量催生了各式各樣的負載均衡產(chǎn)品, 很多專業(yè)的負載均衡硬件提供了很好的功能,但卻價格不菲,這使得負載均衡軟件大受歡迎, nginx 就是其中的一個,在 linux 下有 Nginx、LVS、Haproxy 等等服務可以提供負載均衡服 務,而且 Nginx 提供了幾種分配方式(策略):

a. 輪詢(默認)

每個請求按時間順序逐一分配到不同的后端服務器,如果后端服務器 down 掉,能自動剔除。
配置方式:

b. weight

weight 代表權重, 默認為 1,權重越高被分配的客戶端越多

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 每個請求按訪問 ip 的 hash 結(jié)果分配,這樣每個訪客固定訪問一個后端服務器

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(第三方),按后端服務器的響應時間來分配請求,響應時間短的優(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)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)

    關注

    8

    文章

    7108

    瀏覽量

    89299
  • 服務器
    +關注

    關注

    12

    文章

    9262

    瀏覽量

    85766
  • 局域網(wǎng)

    關注

    5

    文章

    760

    瀏覽量

    46330
  • nginx
    +關注

    關注

    0

    文章

    152

    瀏覽量

    12195
收藏 人收藏

    評論

    相關推薦

    Nginx的正向代理反向代理

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

    采用Nginx反向代理解決跨域

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

    主要學習nginx的安裝配置

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

    Apache與Nginx 簡單對比 以及Nginx 基本使用方法

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

    介紹一款輕量級的Web服務器、反向代理服務器Nginx

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

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

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

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

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

    Nginx的詳細知識點講解

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

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

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

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

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

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

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

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

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

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

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

    「服務器」Nginx Proxy Manager申請cloudflare泛域名

    一概述NginxProxyManager是一個基于Nginx反向代理管理工具,它提供了一個用戶友好的Web界面,方便用戶管理和配置Nginx反向
    的頭像 發(fā)表于 12-06 01:03 ?223次閱讀
    「服務器」<b class='flag-5'>Nginx</b> Proxy Manager申請cloudflare泛域名

    Nginx代理轉(zhuǎn)發(fā)實戰(zhàn):零基礎掌握服務器流量分發(fā)技巧

    Nginx 是最常用的反向代理工具之一,一個指令 proxy_pass搞定反向代理,對于接口代理
    的頭像 發(fā)表于 12-09 12:28 ?831次閱讀