<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Java開(kāi)發(fā)者要了解的 Nginx 反向代理與負(fù)載均衡

          共 3150字,需瀏覽 7分鐘

           ·

          2020-06-20 23:46

          作者:chenhongdong

          鏈接:juejin.im/post/5b01336af265da0b8a67e5c9

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


          什么是反向代理

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

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

          什么是負(fù)載均衡

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

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

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

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

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

          nginx配置

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

          安裝nginx

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

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

          dd8772829f5fb7e4c0286efa629cd6fe.webp

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

          nginx常用命令

          • 啟動(dòng)nginx

            • nginx

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

          24088f0bd384034a180ec4c31ec679da.webp
          • 關(guān)閉nginx
            • 如果出現(xiàn)下圖情況,不要驚慌,是因?yàn)橹皀ginx被啟動(dòng)過(guò)了
            • 只需nginx -s stop,停止nginx服務(wù)
            • 然后再次啟動(dòng)nginx即可
          e11e7fb43548aedf671061e988c23213.webp
          • 重啟nginx
            • nginx -s reload
            • 每次修改完.conf文件就需要重啟nginx
          • 檢查配置
             nginx: the configuration file /usr/local/etc/nginx/nginx.conf syntax is ok
            nginx: configuration file /usr/local/etc/nginx/nginx.conf test is successful
            復(fù)制代碼
            • 檢查修改的nginx.conf配置是否正確
            • nginx -t
            • 如果出現(xiàn)下面ok和successfull就代表正確了,其他的都不對(duì)
          對(duì)于我們前端來(lái)說(shuō)正常工作當(dāng)中,倒是不需要過(guò)多的修改nginx的。我們之所以修改nginx配置,是為了做一些反向代理罷了

          proxy_pass

          nginx反向代理主要通過(guò)proxy_pass來(lái)配置,將你項(xiàng)目的開(kāi)發(fā)機(jī)地址填寫(xiě)到proxy_pass后面,正常的格式為proxy_pass URL即可
          server?{
          ????listen?80;
          ????location?/ {
          ????????proxy_pass?http://10.10.10.10:20186;
          ????}
          }

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

          • ip_hash指令
          • server指令
          • upstream指令及相關(guān)變量
          上面寫(xiě)的三個(gè)指令,我們直接通過(guò)代碼來(lái)一一分析
          // 修改nginx.conf
          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://firstdemo;
          ????????}
          ????}
          }
          上面修改的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 {}
            • 里面寫(xiě)的兩個(gè)server分別對(duì)應(yīng)著不同的服務(wù)器
          • server模塊
            • 實(shí)現(xiàn)反向代理
            • listen監(jiān)督端口號(hào)
            • location / {}訪問(wèn)根路徑
            • proxy_pass http://firstdemo,代理到firstdemo里兩個(gè)服務(wù)器上
          上面修改了nginx.conf之后,別忘了最重要的一步重啟nginx那么再次訪問(wèn)localhost:8080,會(huì)看到如下圖頁(yè)面e8d3b0ad9f104c7af76b5d88bf580030.webp還有另一個(gè)頁(yè)面175c88f01623cafe360bf2bcd49154ff.webp每次刷新都會(huì)訪問(wèn)不同的服務(wù)器,這樣就做到了負(fù)載均衡處理不過(guò),更應(yīng)該做到的是當(dāng)用戶(hù)第一次訪問(wèn)到其中一臺(tái)服務(wù)器后,下次再訪問(wèn)的時(shí)候就直接訪問(wèn)該臺(tái)服務(wù)器就好了,不用總變化了。那么就發(fā)揮了ip_hash的威力了
          // 省略...
          ????upstream firstdemo {
          ????????ip_hash;
          ????????server 39.106.145.33;
          ????????server 47.93.6.93;
          ????}
          ip_hash它的作用是如果第一次訪問(wèn)該服務(wù)器后就記錄,之后再訪問(wèn)都是該服務(wù)器了,這樣比如第一次訪問(wèn)是33服務(wù)器,那之后再訪問(wèn)也會(huì)分配為33服務(wù)器訪問(wèn)了

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

          在公司開(kāi)發(fā)項(xiàng)目的時(shí)候,遇到設(shè)計(jì),產(chǎn)品走查環(huán)節(jié)的時(shí)候,不能每次都讓他們?nèi)ヅ湟粋€(gè)host,畢竟這樣不友好,走查起來(lái)有麻煩。所以更應(yīng)該給他們直觀的感受,既給一個(gè)訪問(wèn)地址就可以看到樣子下面給大家看一下,我正常在公司時(shí)nginx做的反向代理配置,和咱們上面的如出一轍,只是加了一個(gè)server_name,用指定的域名去訪問(wèn)即可
          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才能生效,這樣只需要訪問(wèn)chd.news.so.m.qss.test.so.com這個(gè)地址就可以查看我的開(kāi)發(fā)環(huán)境,進(jìn)行走查了。更多Java推文,可以關(guān)注下面公眾號(hào)

          瀏覽 60
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  豆花视频无码在线看 | AA黄色片视频 | 色九九九九九九 | 免费一级毛片毛多水多 | 日韩成人在线观看 |