nginx(engine x) 是一個 高性能 的 HTTP 和 反向代理 服務(wù)器、郵件代理服務(wù)器以及通用的 TCP/UDP 代理服務(wù)器。其特點為輕量級(占用系統(tǒng)資源少)、穩(wěn)定性好、可擴展性(模塊化結(jié)構(gòu))、并發(fā)能力強、配置簡單等。 本文主要介紹在測試環(huán)境中通過 nginx 實現(xiàn)基本的 負(fù)載均衡 功能。 nginx 可以提供 HTTP 服務(wù),包括處理靜態(tài)文件,支持 SSL 和 TLS SNI、GZIP 網(wǎng)頁壓縮、虛擬主機、URL 重寫等功能,可以搭配 FastCGI、uwsgi 等程序處理動態(tài)請求。 此外,nginx 還可以用于代理、反向代理、負(fù)載均衡、緩存等服務(wù)器功能,在集群環(huán)境中改善網(wǎng)絡(luò)負(fù)載、提高可用性。 一、搭建測試環(huán)境 這里的測試環(huán)境為通過VirtualBox 安裝的兩臺Lubuntu 19.04 虛擬機,Linux 系統(tǒng)安裝方法不作贅述。 為了保證兩臺 Linux 虛擬機之間的相互訪問,虛擬機的網(wǎng)絡(luò)配置除了默認(rèn)的 NAT 方式外,還使用了 VirtualBox 軟件提供的內(nèi)部網(wǎng)絡(luò)(Internal) 聯(lián)網(wǎng)方式。 此外,還需要將兩臺虛擬機中與“內(nèi)部網(wǎng)絡(luò)”相關(guān)聯(lián)的網(wǎng)卡,綁定上 同一網(wǎng)段 的靜態(tài) IP 地址,則兩臺主機形成局域網(wǎng)絡(luò),相互之間可以直接訪問。 網(wǎng)絡(luò)配置 打開 VirtualBox 軟件,分別進(jìn)入兩臺虛擬機的設(shè)置界面,為其添加 連接方式為內(nèi)部網(wǎng)絡(luò) 的網(wǎng)絡(luò)連接,截圖如下(兩臺虛擬機作同樣的配置): 內(nèi)部網(wǎng)絡(luò) 登錄進(jìn)虛擬機系統(tǒng),使用 ip addr 命令查看當(dāng)前的網(wǎng)絡(luò)連接信息: $ ip addr ... 2: enp0s3: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:38:65:a8 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global dynamic noprefixroute enp0s3 valid_lft 86390sec preferred_lft 86390sec inet6 fe80::9a49:54d3:2ea6:1b50/64 scope link noprefixroute valid_lft forever preferred_lft forever 3: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:0d:0b:de brd ff:ff:ff:ff:ff:ff inet6 fe80::2329:85bd:937e:c484/64 scope link noprefixroute valid_lft forever preferred_lft forever 可以看到,此時的 enp0s8 網(wǎng)卡還沒有綁定 IPv4 地址,需要為其手動指定靜態(tài) IP。 需要 注意 的是,從 Ubuntu 17.10 版本開始,一個新的名為 netplan 的工具被引入,原來的網(wǎng)絡(luò)配置文件/etc/network/interfaces不再生效。 所以為網(wǎng)卡設(shè)置靜態(tài) IP 時需要修改 /etc/netplan/01-network-manager-all.yaml 配置文件,示例如下: network: version: 2 renderer: NetworkManager ethernets: enp0s8: dhcp4: no dhcp6: no addresses: [192.168.1.101/24] # gateway4: 192.168.1.101 # nameservers: # addresses: [192.168.1.101, 8.8.8.8] 由于兩臺主機處于同一子網(wǎng),網(wǎng)關(guān)和 DNS 服務(wù)器未配置的情況下仍可以互相訪問。對應(yīng)的配置項暫時先注釋掉(后續(xù)可以嘗試自行搭建 DNS 服務(wù)器)。 編輯完成后運行sudo netplan apply命令,前面配置的靜態(tài) IP 即可生效。 $ ip addr ... 3: enp0s8: mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 08:00:27:0d:0b:de brd ff:ff:ff:ff:ff:ff inet 192.168.1.101/24 brd 192.168.1.255 scope global noprefixroute enp0s8 valid_lft forever preferred_lft forever inet6 fe80::a00:27ff:fe0d:bde/64 scope link valid_lft forever preferred_lft forever 登錄進(jìn)另一臺虛擬機中,執(zhí)行同樣的操作(注意配置文件中的 addresses 項改為 [192.168.1.102/24] )。兩臺虛擬機的網(wǎng)絡(luò)即配置完成。 此時有 Linux 虛擬機 server1,IP 地址為 192.168.1.101;Linux 虛擬機 server2,IP 地址為 192.168.1.102。兩臺主機可相互訪問。測試如下: starky@server1:~$ ping 192.168.1.102 -c 2 PING 192.168.1.102 (192.168.1.102) 56(84) bytes of data. 64 bytes from 192.168.1.102: icmp_seq=1 ttl=64 time=0.951 ms 64 bytes from 192.168.1.102: icmp_seq=2 ttl=64 time=0.330 ms --- 192.168.1.102 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 2ms rtt min/avg/max/mdev = 0.330/0.640/0.951/0.311 ms skitar@server2:~$ ping 192.168.1.101 -c 2 PING 192.168.1.101 (192.168.1.101) 56(84) bytes of data. 64 bytes from 192.168.1.101: icmp_seq=1 ttl=64 time=0.223 ms 64 bytes from 192.168.1.101: icmp_seq=2 ttl=64 time=0.249 ms --- 192.168.1.101 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 29ms rtt min/avg/max/mdev = 0.223/0.236/0.249/0.013 ms 二、安裝 nginx 服務(wù)器 nginx 的安裝方式主要有兩種:
本示例并沒有特殊的需求,所以直接選擇第一種安裝方式。命令如下: $ sudo apt-get update $ sudo apt-get install nginx 安裝成功后,通過systemctl status nginx命令查看 nginx 服務(wù)的運行狀態(tài): $ systemctl status nginx ● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en Active: active (running) since Tue 2019-07-02 01:22:07 CST; 26s ago Docs: man:nginx(8) Main PID: 3748 (nginx) Tasks: 2 (limit: 1092) Memory: 4.9M CGroup: /system.slice/nginx.service ├─3748 nginx: master process /usr/sbin/nginx -g daemon on; master_pro └─3749 nginx: worker process 通過curl -I 127.0.0.1命令驗證 Web 服務(wù)器是否可以正常訪問: $ curl -I 127.0.0.1 HTTP/1.1 200 OK Server: nginx/1.15.9 (Ubuntu) ... 三、負(fù)載均衡配置 負(fù)載均衡(load-balancing)即按照一定的規(guī)則將負(fù)載分?jǐn)偟蕉鄠操作單元上執(zhí)行,從而提高服務(wù)的可用性和響應(yīng)速度。 簡單的示例圖如下: load-balancing 如某網(wǎng)站應(yīng)用部署在多臺主機構(gòu)成的服務(wù)器集群上,負(fù)載均衡服務(wù)器位于終端用戶和服務(wù)器集群之間,負(fù)責(zé)接收終端用戶的訪問流量,并根據(jù)一定的規(guī)則將用戶訪問 分發(fā) 給后端的服務(wù)器主機,從而提高在高并發(fā)狀態(tài)下的響應(yīng)速度。 負(fù)載均衡服務(wù)器 nginx 可以通過 upstream 選項配置負(fù)載均衡。這里使用虛擬機 server1 作為負(fù)載均衡服務(wù)器。 修改 serve1 上默認(rèn)站點的配置文件( sudo vim /etc/nginx/sites-available/default ),改為如下內(nèi)容: upstream backend { server 192.168.1.102:8000; server 192.168.1.102; } server { listen 80; location / { proxy_pass http://backend; } } 基于測試的目的,當(dāng)前只有兩臺虛擬機。server1(192.168.1.101)已經(jīng)作為負(fù)載均衡服務(wù)器,所以使用 server2(192.168.1.102)作為應(yīng)用服務(wù)器。 這里借助 nginx 的虛擬主機功能,分別將 192.168.1.102 和 192.168.1.102:8000 “模擬”為兩臺不同的應(yīng)用服務(wù)器。 應(yīng)用服務(wù)器 修改 server2 上默認(rèn)站點的配置文件( sudo vim /etc/nginx/sites-available/default ),改為如下內(nèi)容: server { listen 80; root /var/www/html; index index.html index.htm index.nginx-debian.html; server_name 192.168.1.102; location / { try_files $uri $uri/ =404; } } 在 /var/www/html 目錄下創(chuàng)建 index.html 文件,作為 default 站點的 index 頁面,內(nèi)容如下: <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> 運行 [code]sudo systemctl restart nginx [/code]命令重啟 nginx 服務(wù),此時訪問http://192.168.1.102 即可獲取剛剛創(chuàng)建的 index.html 頁面: $ curl 192.168.1.102 <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> 配置“另一臺主機”上的站點,在 server2 上創(chuàng)建 [code]/etc/nginx/sites-available/server2 [/code]配置文件,內(nèi)容如下: server { listen 8000; root /var/www/html; index index2.html index.htm index.nginx-debian.html; server_name 192.168.1.102; location / { try_files $uri $uri/ =404; } } 注意監(jiān)聽端口和 index 頁面的配置變化。在 /var/www/html 目錄下創(chuàng)建 index2.html 文件,作為 server2 站點的 index 頁面,內(nèi)容如下: <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> PS:為了測試目的,default 站點和 server2 站點配置在同一個主機 server2 上,且頁面稍有不同。實際環(huán)境中通常將這兩個站點配置在不同的主機上,且內(nèi)容一致。 運行sudo ln -s /etc/nginx/sites-available/server2 /etc/nginx/sites-enabled/命令啟用剛剛創(chuàng)建的 server2 站點。 重啟 nginx 服務(wù),此時訪問 http://192.168.1.102:8000 即可獲取剛剛創(chuàng)建的 index2.html 頁面: $ curl 192.168.1.102:8000 <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> 負(fù)載均衡測試 回到負(fù)載均衡服務(wù)器即虛擬機 server1 上,其配置文件中設(shè)置的 反向代理 URL 為 http://backend 。 由于未曾配置域名解析服務(wù),無法將 URLhttp://backend 定位到正確的位置。 可以修改 server1 上的 /etc/hosts 文件,添加如下一條記錄: 127.0.0.1 backend 即可將該域名解析到本地 IP ,完成對負(fù)載均衡服務(wù)器的訪問。 重啟 nginx 服務(wù),在 server1 上訪問http://backend ,效果如下: $ curl http://backend <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server1</title> </head> <body> <h1>This is Server1, Address 192.168.1.102.</h1> </body> </html> $ curl http://backend <html> <head> <title>Index Page From Server2</title> </head> <body> <h1>This is Server2, Address 192.168.1.102:8000.</h1> </body> </html> 從輸出中可以看出,server1 對負(fù)載均衡服務(wù)器http://backend 的訪問,完成了對應(yīng)用服務(wù)器 server2 上兩個 Web 站點的 輪詢 ,起到負(fù)載均衡的作用。 四、負(fù)載均衡方法 nginx 開源版本提供四種負(fù)載均衡的實現(xiàn)方式,簡單介紹如下。 1. Round Robin 用戶請求 均勻 地分配給后端服務(wù)器集群(可以通過 weight 選項設(shè)置輪詢的 權(quán)重 ),這是 nginx 默認(rèn)使用的負(fù)載均衡方式: upstream backend { server backend1.example.com weight=5; server backend2.example.com; } 2. Least Connections 用戶請求會優(yōu)先轉(zhuǎn)發(fā)給集群中當(dāng)前活躍連接數(shù)最少的服務(wù)器。同樣支持 weight 選項。 upstream backend { least_conn; server backend1.example.com; server backend2.example.com; } 3. IP Hash 用戶請求會根據(jù) 客戶端 IP 地址 進(jìn)行轉(zhuǎn)發(fā)。即該方式意圖保證某個特定的客戶端最終會訪問 同一個 服務(wù)器主機。 upstream backend { ip_hash; server backend1.example.com; server backend2.example.com; } 4. Generic Hash 用戶請求會根據(jù)一個 自定義鍵值 確定最終轉(zhuǎn)發(fā)的目的地,該鍵值可以是字符串、變量或者組合(如源 IP 和端口號)。 upstream backend { hash $request_uri consistent; server backend1.example.com; server backend2.example.com; } 權(quán)重 參考下面的示例配置: upstream backend { server backend1.example.com weight=5; server backend2.example.com; server 192.0.0.1 backup; } 默認(rèn)權(quán)重(weight)為 1 。 backup 服務(wù)器 只有在所有其他服務(wù)器全部宕機的情況下才會接收請求。 如上面的示例,每 6 個請求會有 5 個轉(zhuǎn)發(fā)給[code] backend1.example.com[/code],1 個轉(zhuǎn)發(fā)給 backend2.example.com。只有當(dāng) backend1 和 backend2 全部宕機時,192.0.0.1 才會接收并處理請求。 |
免責(zé)聲明:本站部分文章和圖片均來自用戶投稿和網(wǎng)絡(luò)收集,旨在傳播知識,文章和圖片版權(quán)歸原作者及原出處所有,僅供學(xué)習(xí)與參考,請勿用于商業(yè)用途,如果損害了您的權(quán)利,請聯(lián)系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創(chuàng)業(yè)、互聯(lián)網(wǎng)等領(lǐng)域,為您提供最新最全的互聯(lián)網(wǎng)資訊,幫助站長轉(zhuǎn)型升級,為互聯(lián)網(wǎng)創(chuàng)業(yè)者提供更加優(yōu)質(zhì)的創(chuàng)業(yè)信息和品牌營銷服務(wù),與站長一起進(jìn)步!讓互聯(lián)網(wǎng)創(chuàng)業(yè)者不再孤獨!
掃一掃,關(guān)注站長網(wǎng)微信
當(dāng)我們在共享網(wǎng)絡(luò)訪問的時候,可能會遇到提示指定的網(wǎng)絡(luò)名不再可用的問題,這可能是由于我們的共享網(wǎng)絡(luò)出現(xiàn)了錯誤,也可能是被共享的對象所拒絕了。指定的網(wǎng)絡(luò)名 ......
文/曹楊 原標(biāo)題:誰還看電視? 爸爸戴一副老花鏡,媽媽戴一副近視鏡,一人坐在沙發(fā),一人躺在床上,各自刷著自己關(guān)注的博主更新的短視頻。電視也許開著,但只是背景。 這樣的畫面,幾乎成了洛奇家的常 ...
1、首先進(jìn)入到“百度”軟件中, 2、然后在其中輸入“百度識圖”, 3、之后點擊圖中的“開始使用”按鈕, 4、緊接著點擊右下角的“相冊”功能, 5、在相冊下 ......
圖片來源于簡書 文/郭開森 楊帆 陸玖財經(jīng)準(zhǔn)備開新欄目了,每周一創(chuàng)始人郭開森和楊帆合體郭德帆,對行業(yè)進(jìn)行一些觀察和評論,第一篇我們?nèi)允谴蛩銓懮鐓^(qū)團(tuán)購,這是當(dāng)下最火的話題。 來過陸玖財經(jīng)做客的朋友們...
一、軟件沖突1、首先確認(rèn)是否是應(yīng)用程序沖突導(dǎo)致的。2、查看是否只有特定幾個游戲或應(yīng)用會導(dǎo)致該問題。3、如果是應(yīng)用沖突,那么只要卸載這些app就可以解決了。二 ......
電腦端:1、大家可以點擊右邊鏈接進(jìn)入網(wǎng)頁版的百度網(wǎng)盤,進(jìn)入之后點擊“去登錄”。https://pan.baidu.com/2、之后正確的輸入賬號密碼進(jìn)行登錄就好啦。手機端:1 ......
一、N100對比intel i3 1、N100的跑分達(dá)到了147210分,這個數(shù)據(jù)可以達(dá)到i3的七代級別。 2、在跑分上也是超越了大部分的I3七代CPU,不過比I3八代要弱勢一些。 3 ......
8月15日消息 上周,有媒體報道前身為百度圖片的“榴蓮”APP含有大量不雅視頻內(nèi)容被用戶舉報。對此,百度圖片官方進(jìn)行了回應(yīng),百度圖片表示已經(jīng)對報道中所涉及的“生吃旋風(fēng)哥”等爭議內(nèi)容進(jìn)行了下線處理。 此外,百度...
在填寫一些項目申請書中,總是免不了要選擇一些數(shù)字,但是在方框中如何插入數(shù)字,該怎么辦呢?那么下面就由學(xué)習(xí)啦小編給大家分享下word在方框里輸入數(shù)字的技巧, ......
WPS Office手機版怎么加橫線?很多用戶還不知道WPS Office手機版怎么加橫線,WPS Office手機版怎么加橫線,WPS Office手機版怎么打橫線,WPS Office手機版怎么弄 ......
迅雷前綴是什么 答:迅雷前綴是(magnet:?xt=urn:btih:)括號里的就是了。 我們只要在這段文字之后輸入后續(xù)的內(nèi)容,就可以創(chuàng)建下載鏈接了。 1、磁力鏈接不基于文 ......
一、內(nèi)容特權(quán)。 1、半價點播。 許多站內(nèi)視頻都需要付費觀看,而大會員用戶可以直接半價享受; 購買成功后的48h內(nèi)無限次觀看。有部分的內(nèi)容是只限在中國大陸內(nèi)觀 ......
1、首先打開小米運動的“實驗室功能”。 2、接著點擊“門卡模擬”。 3、然后點擊“我知道了”。 4、最后貼近就可以刷卡成功了。...
1、打開手機輕顏相機app,點擊“我的”,點擊“設(shè)置”,2、點擊“幫助與反饋”,3、點擊右下角“在線咨詢”即可聯(lián)系客服,詢問自己的問題啦!...
答:華為P系列: 華為p40,華為p40plus,華為p50,華為p50e,華為p60 華為mate系列: 華為mate40,華為mate50,華為mate50e,華為mate60 華為nova系列: 華為n ......
近期有用戶反映,電腦在更新Windows 11 Insider Preview 25252.1000后,出現(xiàn)了應(yīng)用和已壓縮的文件點擊毫無反應(yīng),拖拽都不行,只能從開始菜單打開的情況,這是怎 ......
可見單元格就是不包括隱藏或者篩選篩選后隱藏起來的單元格區(qū)域。方法:篩選或隱藏數(shù)據(jù),復(fù)制需要粘貼的值,在目標(biāo)單元格區(qū)域左上角的第一個單元格處右擊,選擇【 ......
答:驍龍8+更好。 驍龍7+gen2實際上就是驍龍8+的低配版本。 在一些其他的核心架構(gòu)方面都是保持一致的,比如說CPU的架構(gòu)、GPU的架構(gòu)等等。 驍龍7+和驍龍8+具體 ......
文/黎明 一場針對中國互聯(lián)網(wǎng)巨頭的反壟斷風(fēng)暴正在醞釀,而且這次動真格了。 11月10日,國家市場監(jiān)管總局發(fā)布《關(guān)于平臺經(jīng)濟(jì)領(lǐng)域的反壟斷指南(征求意見稿)》,要加大對互聯(lián)網(wǎng)巨頭涉嫌壟斷的調(diào)查和監(jiān)管。 ...
文件被win10系統(tǒng)誤報病毒自動刪除了如何進(jìn)行恢復(fù)?有用戶下載了某些破解軟件卻被Win10系統(tǒng)誤認(rèn)為是病毒文件而自動刪除,當(dāng)然系統(tǒng)自帶殺毒軟件其實挺不錯的,就是有時候會誤報,大家遇到這種情況的時候就希望把誤刪的...
win11系統(tǒng)如何釋放掉系統(tǒng)默認(rèn)保留的存儲空間?一般情況下,Windows會保留一些存儲空間,以便設(shè)備獲得良好性能和成功更新。但是當(dāng)出現(xiàn)系統(tǒng)盤儲存空間不足時,我們會將幾個G的保留空間釋放出來,以解燃眉之急。本期教...
1、先打開機頂盒進(jìn)入主界面,并且使用遙控器打開設(shè)置。 2、然后選擇“賬號與安全”,并且進(jìn)入。 3、最后往下面翻就可以看到“ADB調(diào)試”的選項,直接開啟就行了 ......
答:在3DMark壓力測試當(dāng)中,顯卡需要超高97%才能夠算合格,證明顯卡的穩(wěn)定性是過關(guān)的。 1、一般的默認(rèn)情況下在2500~3000分就算很正常的了。 2、分?jǐn)?shù)越高說明顯卡 ......
羅技g304dpi燈顏色代表什么:1、藍(lán)色:這種情況是正常工作的顯示,如果說是常亮或者閃爍,那都沒有問題這是在正常工作呢。2、紅色:如果說是紅燈閃爍的話那就是 ......
win11系統(tǒng)快速跳過聯(lián)網(wǎng)創(chuàng)建本地管理賬戶3種方法?現(xiàn)在市面上銷售的品牌筆記本和臺式機基本上都預(yù)裝Windows11家庭中文版正版操作系統(tǒng),聯(lián)網(wǎng)后系統(tǒng)會自動激活。當(dāng)用戶拿到新機器后還需要按照cortana(小娜)的提示一步...
我們經(jīng)常用WPS的時候,如果需要輸入波浪號~,會發(fā)現(xiàn)鍵盤上的波浪號輸入之后在最上面,但是為了美觀,我們希望波浪號顯示在中間。這里總結(jié)了三個方法分享給大家 ......
答:中高端水平 i513500hx在處理器當(dāng)中是處于一個中高端的水平。 i513500hx是第十一代酷睿處理器系列的一員,基礎(chǔ)頻率為2.4GHz,表現(xiàn)十分的不錯。 i513500hx介 ......
相信有非常多使用過筆記本的用戶都聽說過獨顯直連這個詞,但很多用戶并不了解獨顯直連是什么,又有什么用處,那么下面就和小編一起來看看什么是獨顯直連和開啟這 ......
win11系統(tǒng)開機總是自動登錄OneDrive如何關(guān)閉?win11系統(tǒng)開機的時候,會自動啟動OneDrive,不想要啟動,該怎么操作呢?下面我們就來看看詳細(xì)的教程。 在OneDrive界面點小齒輪按鈕,下拉菜單中點【設(shè)置】。 單擊【...
打開軟件,直接填寫就可以。 1、下載安裝easyconnect軟件, 2、打開easyconnect應(yīng)用,在如圖所示的“服務(wù)器地址”一欄輸入如圖所示網(wǎng)址,點擊“連接”, 3、等 ......