圖文講解,如何使用 Nginx 反向代理、負載均衡

2021-02-23 Java基基

點擊上方「Java基基」,選擇「設為星標」

做積極的人,而不是積極廢人!

來源:http://t.cn/AiKual8Y

學到老活到老

什麼是反向代理與負載均衡

Nginx反向代理與負載均衡的實現

nginx配置

proxy_pass

Upstream模塊實現負載均衡

工作中的簡單使用

學到老活到老

前端圈一直很新,一直要不停的學習,而且在進入大廠的路上,還要求熟悉一門後臺語言等等。用一句別人開玩笑的話來說,java十年前的技術現在還能用,而前端的技術就不是這樣的了

突然想起了deno項目發布的時候,一個搞笑的issue,「求別更新了,老子學不動了」。雖然看起來是一個玩笑的issue,但卻道出了前端們不得不表現出來的疲態,知識點越來越龐大,學習的內容越來越多

也聽到一些朋友們說,換成現在再面試阿里,恐怕不好進了啊。當然很多都是隨便一說的玩笑話,聽過一笑便可,不必當真,也不必抱怨了

好了,今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡

什麼是反向代理與負載均衡什麼是反向代理

當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問,必須通過第三方伺服器才能訪問集群

這個時候,我們通過第三方伺服器訪問伺服器集群的內容,但是我們並不知道是哪一臺伺服器提供的內容,此種代理方式稱為反向代理

什麼是負載均衡

公司會建立很多的伺服器,這些伺服器組成了伺服器集群,然後,當用戶訪問網站的時候,先訪問一個中間伺服器,再讓這個中間伺服器在伺服器集群中選擇一個壓力較小的伺服器,然後將該訪問請求引入選擇的伺服器

所以,用戶每次訪問,都會保證伺服器集群中的每個伺服器壓力趨於平衡,分擔了伺服器壓力,避免了伺服器崩潰的情況

一句話:nginx會給你分配伺服器壓力小的去訪問

Nginx反向代理與負載均衡的實現

用戶訪問網站的時候首先會訪問nginx伺服器,然後nginx伺服器再從伺服器集群中選擇壓力較小的伺服器,將該訪問請求引向該伺服器

nginx配置

下面修改配置方面我就從mac系統下來進行簡單的演示,如何安裝的話也暫以mac為主了,windows系統直接去Nginx官網下載安裝即可

安裝nginx
    1-進到homebrew官網,然後複製命令,預安裝需要的東西
    2-brew install nginx    安裝nginx
    3-nginx -v  顯示版本號
進入nginx
    cd /usr/local/etc/nginx

下圖為進入nginx文件夾下的文件內容

img

當進到這個目錄下,我們就可以操作nginx了,接下來就列舉一些非常非常有用的命令,多敲幾遍,一定要記住

nginx常用命令imgimg

對於我們前端來說正常工作當中,倒是不需要過多的修改nginx的。我們之所以修改nginx配置,是為了做一些反向代理罷了

proxy_pass

nginx反向代理主要通過proxy_pass來配置,將你項目的開發機地址填寫到proxy_pass後面,正常的格式為proxy_pass URL即可

server {
    listen 80;
    location / {
        proxy_pass http://10.10.10.10:20186;
    }
}

Upstream模塊實現負載均衡

ip_hash指令

server指令

upstream指令及相關變量

上面寫的三個指令,我們直接通過代碼來一一分析


worker_processes 1;
events {
    worker_connections 1024;
}
http {
    upstream firstdemo {
        server 39.106.145.33;
        server 47.93.6.93;
    }
    server {
        listen 8080;
        location / {
            proxy_pass http:
        }
    }
}

上面修改的nginx.conf就是上圖中花圈的那個文件,nginx配置的主要修改就在這裡。化繁為簡,把原本nginx.conf裡的內容直接替換為上面的不到20行的代碼了

既然不到20行,那就把裡面對應的內容統統解釋一下吧,有個了解就好

上面修改了nginx.conf之後,別忘了最重要的一步重啟nginx

那麼再次訪問localhost:8080,會看到如下圖頁面

img

還有另一個頁面

img

每次刷新都會訪問不同的伺服器,這樣就做到了負載均衡處理

不過,更應該做到的是當用戶第一次訪問到其中一臺伺服器後,下次再訪問的時候就直接訪問該臺伺服器就好了,不用總變化了。那麼就發揮了ip_hash的威力了


    upstream firstdemo {
        ip_hash;
        server 39.106.145.33;
        server 47.93.6.93;
    }

ip_hash它的作用是如果第一次訪問該伺服器後就記錄,之後再訪問都是該伺服器了,這樣比如第一次訪問是33伺服器,那之後再訪問也會分配為33伺服器訪問了

工作中的簡單使用

在公司開發項目的時候,遇到設計,產品走查環節的時候,不能每次都讓他們去配一個host,畢竟這樣不友好,走查起來有麻煩。所以更應該給他們直觀的感受,既給一個訪問地址就可以看到樣子

下面給大家看一下,我正常在公司時nginx做的反向代理配置,和咱們上面的如出一轍,只是加了一個server_name,用指定的域名去訪問即可

server {
    listen       80;
    server_name  chd.news.so.m.qss.test.so.com ;
    auth_basic off;
    location / {
        proxy_pass    http://10.10.10.10:20186;
        proxy_set_header Host $host;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 60;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
    }
}

每次修改完nginx配置後不要忘記重啟nginx才能生效,這樣只需要訪問chd.news.so.m.qss.test.so.com這個地址就可以查看我的開發環境,進行走查了。

這就是nginx最大的功能,反向代理我也接觸的不是很多,畢竟不是專業運維出身,可比性差了很多。略知一二,也只是方便大家工作中使用吧,再次感謝大家的收看了,哈哈


歡迎加入我的知識星球,一起探討架構,交流源碼。加入方式,長按下方二維碼噢

已在知識星球更新源碼解析如下:

如果你喜歡這篇文章,喜歡,轉發。

生活很美好,明天見(。・ω・。)ノ♡

相關焦點

  • Nginx 反向代理、負載均衡圖文教程 !
    當然很多都是隨便一說的玩笑話,聽過一笑便可,不必當真,也不必抱怨了好了,今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • Nginx 反向代理與負載均衡
    作者:chenhongdong連結:juejin.im/post/5b01336af265da0b8a67e5c9什麼是反向代理與負載均衡
  • 誰說前端不需要懂-Nginx反向代理與負載均衡
    今天就直接來說一下主題吧,前端要了解一些運維的Nginx用法,內容不多,簡單看看就好,這兩個功能在工作當中就夠用了,那麼首先來看個問題,什麼是反向代理與負載均衡什麼是反向代理與負載均衡什麼是反向代理當我們有一個伺服器集群,並且伺服器集群中的每臺伺服器的內容一樣的時候,同樣我們要直接從個人電腦訪問到伺服器集群伺服器的時候無法訪問
  • Nginx負載均衡與反向代理—《億級流量網站架構核心技術》
    在繼續講解之前,首先統一幾個術語。接入層、反向代理伺服器、負載均衡伺服器,在本文中如無特殊說明則指的是Nginx。upstream server即上遊伺服器,指Nginx負載均衡到的處理業務的伺服器,也可以稱之為real server,即真實處理業務的伺服器。對於負載均衡我們要關心的幾個方面如下。
  • Nginx 反向代理和負載均衡策略實戰案例
    存在即合理,那為什麼要使用nginx呢?這得看看nginx能幫我們做些什麼。首先,nginx能做反向代理【關於反向代理和正向代理此處不做說明了,感興趣的小夥伴自行谷歌】;比方說,我想在本地使用 www.glmapper1.com 的域名去訪問www.taobao.com。 那麼這個時候我們就可以通過nginx去實現。
  • 反向代理、負載均衡!優秀的 Nginx 是如何做到的?
    Nginx 是一款自由的、開源的、高性能的 HTTP 伺服器和反向代理伺服器;同時也是一個 IMAP、POP3、SMTP 代理伺服器。Nginx 可以作為一個 HTTP 伺服器進行網站的發布處理,另外 Nginx 可以作為反向代理進行負載均衡的實現。
  • (實用篇)詳解 Nginx代理功能與負載均衡
    本篇文章主要介紹了詳解 Nginx代理功能與負載均衡,先描述一些關於代理功能的配置,再說明負載均衡詳細,有興趣的可以了解一下。 序言Nginx的代理功能與負載均衡功能是最常被用到的,關於nginx的基本語法常識與配置已在上篇文章中有說明,這篇就開門見山,先描述一些關於代理功能的配置,再說明負載均衡詳細。
  • 【Nginx】Nginx部署實戰——靜態文件+反向代理+均衡負載+Https+Websocket
    Nginx是一款是由俄羅斯的程序設計師Igor Sysoev所開發高性能的 Web和 反向代理 伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。前一段時間聽說Igor Sysoev被俄羅斯警方帶走了,不知道放出來了沒有。言歸正常,來看一下nginx的相關配置如何滿足我們的日常需求吧。
  • Nginx代理功能與負載均衡詳解
    ,再說明負載均衡詳細。proxy_connect_timeout 1;   proxy_read_timeout 1; proxy_send_timeout 1; proxy_ignore_client_abort on;  5、如果使用upstream指令配置啦一組伺服器作為被代理伺服器,伺服器中的訪問算法遵循配置的負載均衡規則,同時可以使用該指令配置在發生哪些異常情況時
  • 編譯安裝nginx並實現反向代理負載均衡和緩存功能
    ngx_http_ssl_module #啟用ssl模塊 --with-http_v2_module enable ngx_http_v2_module #源自spdy協議,優先請求瀏覽器最繼續的內容 --with-http_realip_module enable ngx_http_realip_module #反向代理時把真實訪問
  • Nginx 正向代理與反向代理
    而在此之前僅僅使用了過代理軟體,曾經為了訪問google,使用了代理軟體,需要在瀏覽器中配置代理的地址。我只知道有代理這個概念,並不清楚代理還有正向和反向之分,於是趕緊學習一下,補充一下知識。首先弄清楚什麼是正向代理,什麼是反向代理,然後是二者在實際使用中展示的方式是什麼樣的,最後總結一下正向代理用來做什麼,反向代理可以做什麼。
  • 正向代理、反向代理、Nginx負載均衡方式
    於是我先連上代理伺服器,告訴他我需要那個無法訪問網站的內容,代理伺服器去取回來,然後返回給我。從網站的角度,只在代理伺服器來取內容的時候有一次記錄,有時候並不知道是用戶的請求,也隱藏了用戶的資料,這取決於代理告不告訴網站。
  • Nginx 反向代理簡單使用
    第三步 配置nginx信息cd nginx-1.19.0./configure --prefix=/usr/local/nginx/sbin/nginx -?./sbin/nginx./sbin/nginx -c /tmp/nginx.conf./sbin/nginx -p /usr/local/nginx/./sbin/nginx -s stop./sbin/nginx -s quit./sbin/nginx -s reload./sbin/nginx -s reopen.
  • Nginx的 反向代理 究竟怎麼理解?
    ,由反向代理伺服器去選擇目標伺服器獲取數據,然後再返回到客戶端,此時反向代理伺服器和目標伺服器對外就是一個伺服器,暴露的是代理伺服器地址,隱藏了真實伺服器IP位址那正向代理與反向代理如何才能通俗易懂的理解呢?
  • 使用Nginx進行四層負載均衡
    nginx-1.9.0 已發布,該版本增加了stream 模塊用於一般的TCP 代理和負載均衡,ngx_stream_core_module 這個模塊在1.90版本後將被啟用。 定義一個服務用來監聽TCP連接(如:8081埠), 並且把他們代理到一個upstream組的kevin中,配置負載均衡的方法和參數為每個server;配置些如:連接數、權重等等。
  • 配置Nginx反向代理WebSocket
    題圖:By Anubhav Saxena From Unsplash用Nginx給網站做反向代理和負載均衡是廣泛使用的一種
  • 深入淺出反向代理伺服器「Nginx」
    Nginx ("engine x") 是一個高性能的HTTP和反向代理伺服器,特點是佔有內存少,並發能力強,事實上nginx的 並發能力確實在同類型的網頁伺服器中表現較好,中國 大陸使用nginx網站用戶有:百度、京東、新浪、網易、 騰訊、淘寶等。
  • 深入淺出反向代理 Web 伺服器Nginx
    反向代理伺服器?經常聽人說到一些術語,如反向代理,那麼什麼是反向代理,什麼又是正向代理呢?正向代理:思考:Nginx如何做到熱部署?所謂熱部署,就是配置文件nginx.conf修改後,不需要stop Nginx,不需要中斷請求,就能讓配置文件生效!
  • 10分鐘學會windows中iis搭建伺服器集群實現負載均衡和nginx代理轉發
    進入熊澤的百貨小店鋪目錄前言nginx概述nginx反向代理實現負載均衡
  • Nginx反向代理伺服器的配置(詳細)
    Nginx是俄羅斯的程序設計師Igor Sysoev為俄羅斯訪問量第二的Rambler.ru站點開發的開源伺服器軟體,Nginx完全使用C語言編寫,可以作為一臺高性能的web伺服器、反向代理伺服器和郵件代理伺服器使用。在高連接並發的場合,Nginx是Apache商業伺服器不錯的替代品。