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

2021-02-05    分類: 網(wǎng)站建設(shè)

學(xué)到老活到老

前端圈一直很新,一直要不停的學(xué)習(xí),而且在進(jìn)入大廠的路上,還要求熟悉一門后臺(tái)語(yǔ)言等等。用一句別人開玩笑的話來說,java十年前的技術(shù)現(xiàn)在還能用,而前端的技術(shù)就不是這樣的了。

突然想起了deno項(xiàng)目發(fā)布的時(shí)候,一個(gè)搞笑的issue,“求別更新了,老子學(xué)不動(dòng)了”。雖然看起來是一個(gè)玩笑的issue,但卻道出了前端們不得不表現(xiàn)出來的疲態(tài),知識(shí)點(diǎn)越來越龐大,學(xué)習(xí)的內(nèi)容越來越多。

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

好了,今天就直接來說一下主題吧,前端要了解一些運(yùn)維的Nginx用法,內(nèi)容不多,簡(jiǎn)單看看就好,這兩個(gè)功能在工作當(dāng)中就夠用了,那么首先來看個(gè)問題,什么是反向代理與負(fù)載均衡。

什么是反向代理與負(fù)載均衡

什么是反向代理

當(dāng)我們有一個(gè)服務(wù)器集群,并且服務(wù)器集群中的每臺(tái)服務(wù)器的內(nèi)容一樣的時(shí)候,同樣我們要直接從個(gè)人電腦訪問到服務(wù)器集群服務(wù)器的時(shí)候無法訪問,必須通過第三方服務(wù)器才能訪問集群。

這個(gè)時(shí)候,我們通過第三方服務(wù)器訪問服務(wù)器集群的內(nèi)容,但是我們并不知道是哪一臺(tái)服務(wù)器提供的內(nèi)容,此種代理方式稱為反向代理。

什么是負(fù)載均衡

公司會(huì)建立很多的服務(wù)器,這些服務(wù)器組成了服務(wù)器集群,然后,當(dāng)用戶訪問網(wǎng)站的時(shí)候,先訪問一個(gè)中間服務(wù)器,再讓這個(gè)中間服務(wù)器在服務(wù)器集群中選擇一個(gè)壓力較小的服務(wù)器,然后將該訪問請(qǐng)求引入選擇的服務(wù)器。

所以,用戶每次訪問,都會(huì)保證服務(wù)器集群中的每個(gè)服務(wù)器壓力趨于平衡,分擔(dān)了服務(wù)器壓力,避免了服務(wù)器崩潰的情況。

一句話:nginx會(huì)給你分配服務(wù)器壓力小的去訪問。

Nginx反向代理與負(fù)載均衡的實(shí)現(xiàn)

用戶訪問網(wǎng)站的時(shí)候首先會(huì)訪問nginx服務(wù)器,然后nginx服務(wù)器再?gòu)姆?wù)器集群中選擇壓力較小的服務(wù)器,將該訪問請(qǐng)求引向該服務(wù)器。

nginx配置

下面修改配置方面我就從mac系統(tǒng)下來進(jìn)行簡(jiǎn)單的演示,如何安裝的話也暫以mac為主了,windows系統(tǒng)直接去Nginx官網(wǎng)下載安裝即可。

  1. 安裝nginx 
  2.     1-進(jìn)到homebrew官網(wǎng),然后復(fù)制命令,預(yù)安裝需要的東西 
  3.     2-brew install nginx    安裝nginx 
  4.     3-nginx -v  顯示版本號(hào) 
  5. 進(jìn)入nginx 
  6.     cd /usr/local/etc/nginx 

下圖為進(jìn)入nginx文件夾下的文件內(nèi)容。

當(dāng)進(jìn)到這個(gè)目錄下,我們就可以操作nginx了,接下來就列舉一些非常非常有用的命令,多敲幾遍,一定要記住。

nginx常用命令

  • 啟動(dòng)nginx
  • nginx
  • 當(dāng)你敲完nginx這5個(gè)鍵的時(shí)候,并沒有任何反應(yīng),此時(shí)你只需訪問localhost:8080(默認(rèn))即可

  • 關(guān)閉nginx
  • 如果出現(xiàn)下圖情況,不要驚慌,是因?yàn)橹皀ginx被啟動(dòng)過了
  • 只需nginx -s stop,停止nginx服務(wù)
  • 然后再次啟動(dòng)nginx即可

  • 重啟nginx
  • nginx -s reload
  • 每次修改完.conf文件就需要重啟nginx
  • 檢查配置
  • 檢查修改的nginx.conf配置是否正確
  • nginx -t
  • 如果出現(xiàn)下面ok和successfull就代表正確了,其他的都不對(duì)
  1. nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok 
  2. nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful 

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

proxy_pass

nginx反向代理主要通過proxy_pass來配置,將你項(xiàng)目的開發(fā)機(jī)地址填寫到proxy_pass后面,正常的格式為proxy_pass URL即可。

  1. server { 
  2.     listen 80; 
  3.     location / { 
  4.         proxy_pass http://10.10.10.10:20186; 
  5.     } 

Upstream模塊實(shí)現(xiàn)負(fù)載均衡

  • ip_hash指令
  • server指令
  • upstream指令及相關(guān)變量

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

  1. // 修改nginx.conf 
  2. worker_processes 1; 
  3. events { 
  4.     worker_connections 1024; 
  5. http { 
  6.     upstream firstdemo { 
  7.         server 39.106.145.33; 
  8.         server 47.93.6.93; 
  9.     } 
  10.     server { 
  11.         listen 8080; 
  12.         location / { 
  13.             proxy_pass http://firstdemo; 
  14.         } 
  15.     } 

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

既然不到20行,那就把里面對(duì)應(yīng)的內(nèi)容統(tǒng)統(tǒng)解釋一下吧,有個(gè)了解就好。

  • worker_processes
  • 工作進(jìn)程數(shù),和CPU核數(shù)相同
  • worker_connections
  • 每個(gè)進(jìn)程允許的大連接數(shù)
  • upstream模塊
  • 負(fù)載均衡就靠它
  • 語(yǔ)法格式:upstream name {}
  • 里面寫的兩個(gè)server分別對(duì)應(yīng)著不同的服務(wù)器
  • server模塊
  • 實(shí)現(xiàn)反向代理
  • listen監(jiān)督端口號(hào)
  • location / {}訪問根路徑
  • proxy_pass http://firstdemo,代理到firstdemo里兩個(gè)服務(wù)器上

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

那么再次訪問localhost:8080,會(huì)看到如下圖頁(yè)面:

還有另一個(gè)頁(yè)面:

每次刷新都會(huì)訪問不同的服務(wù)器,這樣就做到了負(fù)載均衡處理。

不過,更應(yīng)該做到的是當(dāng)用戶第一次訪問到其中一臺(tái)服務(wù)器后,下次再訪問的時(shí)候就直接訪問該臺(tái)服務(wù)器就好了,不用總變化了。那么就發(fā)揮了ip_hash的威力了。

  1. // 省略... 
  2.     upstream firstdemo { 
  3.         ip_hash; 
  4.         server 39.106.145.33; 
  5.         server 47.93.6.93; 
  6.     } 

ip_hash它的作用是如果第一次訪問該服務(wù)器后就記錄,之后再訪問都是該服務(wù)器了,這樣比如第一次訪問是33服務(wù)器,那之后再訪問也會(huì)分配為33服務(wù)器訪問了。

工作中的簡(jiǎn)單使用

在公司開發(fā)項(xiàng)目的時(shí)候,遇到設(shè)計(jì),產(chǎn)品走查環(huán)節(jié)的時(shí)候,不能每次都讓他們?nèi)ヅ湟粋€(gè)host,畢竟這樣不友好,走查起來有麻煩。所以更應(yīng)該給他們直觀的感受,既給一個(gè)訪問地址就可以看到樣子。

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

  1. server { 
  2.     listen       80; 
  3.     server_name  chd.news.so.m.qss.test.so.com ; 
  4.     auth_basic off; 
  5.     location / { 
  6.         proxy_pass    http://10.10.10.10:20186; 
  7.         proxy_set_header Host $host; 
  8.         proxy_redirect off; 
  9.         proxy_set_header X-Real-IP $remote_addr; 
  10.         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
  11.         proxy_connect_timeout 60; 
  12.         proxy_read_timeout 600; 
  13.         proxy_send_timeout 600; 
  14.     } 

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

新聞名稱:圖文講解,如何使用 Nginx 反向代理、負(fù)載均衡
新聞來源:http://www.muchs.cn/news20/99320.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版網(wǎng)站設(shè)計(jì)、靜態(tài)網(wǎng)站微信小程序、商城網(wǎng)站、服務(wù)器托管

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)