国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡

這篇具有很好參考價值的文章主要介紹了編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

目錄

Ubuntu中安裝Nginx

概念介紹

負載均衡

幾種負載均衡算法

反向代理

環(huán)境規(guī)劃

配置反向代理

加權負載均衡(Weighted Load Balancing)

輪詢(Round Robin)

IP 哈希(IP Hash)

最少連接(Least Connections)

URL 哈希(URL Hash)


想要安裝nginx,首先我們需要有一臺Ubuntu的虛擬機,然后最好在沒有安裝前做一個快照,防止出錯可以快速恢復到沒有安裝前的狀態(tài)

Ubuntu中安裝Nginx

(1)安裝依賴庫

sudo apt install libgd-dev

(2)下載nginx的源碼包

wget http://nginx.org/download/nginx-1.22.1.tar.gz

(3)解壓該壓縮包

tar -zvxf nginx-1.22.1.tar.gz

(4)進入到解壓完成的nginx目錄中,進行編譯安裝

cd nginx-1.22.1

(5)編譯并指定安裝位置,執(zhí)行安裝之后會創(chuàng)建指定文件夾/www/nginx

但是這編譯卻有很多的文件找不到,并且報錯說沒有prce庫,PCRE庫支持正則表達式。如果我們在配置文件nginx.conf中使用了正則表達式,那么在編譯Nginx時就必須把PCRE庫編譯進Nginx,因為Nginx的HTTP模塊需要靠它來解析正則表達式。

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

可以使用下載libpcre3和libpcre3-dev的方法來解決:

sudo apt update
sudo apt install libpcre3 libpcre3-dev

(6)編譯完成后進行安裝

make && make install

安裝完成后,移動到/www/nginx目錄下就可以看到幾個文件了

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

conf/ - 這個目錄包含Nginx的配置文件,用于配置服務器的行為,包括虛擬主機配置、代理設置等。

html/ - 這個目錄通常包含Nginx服務器的網頁文件,也就是網站的內容文件,比如HTML、CSS、JavaScript文件等。

logs/ - 這個目錄包含Nginx服務器的日志文件,記錄了服務器的活動、訪問日志、錯誤日志等。

sbin/ - 這個目錄包含Nginx服務器的可執(zhí)行文件,是服務器的主要執(zhí)行文件,用于啟動、停止、重載服務器等操作。

(7)使用

啟動Nginx:

sbin/nginx

除了啟動還有一些常用的命令:

nginx -s reload	修改配置后重新加載生效
nginx -s stop	快速停止nginx
nginx -s start	啟動nginx
nginx -s quit	完整有序的停止nginx
nginx -v	查看nginx的版本
nginx -V	查看版本和nginx的配置選項
nginx -t -c /path/to/nginx.conf	測試nginx配置文件是否正確
nginx -s reopen	重新打開日志文件

啟動完成后可以在瀏覽器中輸入Ubuntu機器的ipd地址,檢查是否成功運行:
編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

可以看到是正常運行的?

概念介紹

因為需要配置反向代理實現(xiàn)負載均衡,這里需要先知道一下反向代理和負載均衡分別都是什么

負載均衡

當一個網站需要多臺服務器時,通常會部署負載均衡器,因為請求量太大,單臺服務器無法進行高效處理。部署多臺服務器還有助于消除單點故障,從而提高網站的可靠性。

幾種負載均衡算法

  • 1.輪詢?每個請求按照時間順序逐一分配到下游的服務節(jié)點,如果其中某一節(jié)點故障,nginx 會自動剔除故障系統(tǒng)使用戶使用不受影響。

  • 2.加權負載均衡?在配置文件中對下游的服務節(jié)點指定權重值 weight, weight 值越大則被分配的評率越高,一般這種負載均衡,用于節(jié)點的配置情況不一樣,有的可能配置高,有的配置低。

  • 3.ip hash 對每個請求,針對 ip 進行 hash, 然后分配到后臺節(jié)點,這樣一來,同一 ip 會被固定分配到下游固定服務上。它能夠暫時的解決集群環(huán)境中容器之間 session 共享的問題(因為session每次只能和一個人,一對一的記錄,但是如果現(xiàn)在需要負載均衡就出現(xiàn)了一種一對多的情況,可以使用ip_hash實現(xiàn)一對一),但是不是解決的根本之道,只是權宜之策,我們試想,如果訪問的好好的,家里的路由器被重啟了,或者運營商分配給你的 ip 地址改變了,那么你再次訪問的時候,新的 ip 就可能被分配到新的服務上,之前的 session 也就失效了。

  • 4.least_conn (最少連接調度算法) 最少連接調度算法,對下游服務中連接情況,優(yōu)先選擇連接數最少的服務分配。

  • 5.url_hash按訪問的URL的哈希結果來分配請求,使每個URL定向到一臺后端服務器,可以進一步提高后端緩存服務器的效率。Nginx本身不支持url_hash,如果需要這種調度算法,則必須安裝Nginx的hash軟件包。

反向代理

反向代理接受來自客戶端的請求,將其轉發(fā)到可完成該請求的服務器,并將服務器的響應返回給客戶端。

環(huán)境規(guī)劃

了解了負載均衡和反向代理都是什么后那么現(xiàn)在開始來進行演示,這里需要使用反向代理實現(xiàn)負載均衡最少需要三臺設備,這里我的計劃是這樣的:

centos1(192.168.159.200):作為web服務器

Ubuntu(192.168.159.202):作為負載均衡服務器2號

centos2(192.168.159.201):作為負載均衡服務器1號

畫一張圖來演示一下:
?編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

首先來測試一下兩個服務器的nginx頁面是否可以成功訪問

centos2:

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

Ubuntu:

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

可以看到這里的兩臺設備都是可以正常訪問的

配置反向代理

現(xiàn)在我們就可以在centos1上配置反向代理了

加權負載均衡(Weighted Load Balancing)

(1)首先進入到對應的安裝nginx的目錄的conf目錄下:

cd /etc/nginx/

(2)編輯配置文件:

vim nginx.conf
upstream nginx_boot{
# 30s內檢查心跳發(fā)送兩次包,未回復就代表該機器宕機,請求分發(fā)權重比為1:2   
server 192.168.159.201 weight=100 max_fails=2 fail_timeout=30s;
server 192.168.159.202 weight=100 max_fails=2 fail_timeout=30s;
# 這里的IP請配置成你WEB服務所在的機器IP
}
server {
        listen  80;
        server_name 192.168.159.200;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 請求交給名為nginx_boot的upstream上        
                proxy_pass http://nginx_boot;

}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}

(2)修改完成后一定要重新啟動nginx服務

systemctl restart nginx.service 

(3)然后我們就可以在瀏覽器中再次訪問192.168.159.200

第一次:

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

第二次:

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

可以從上面兩次訪問的結果看到,這里的反向代理已經實現(xiàn)了。我們第一次訪問192.168.159.200(centos1)流量被轉發(fā)到centos2(192.168.159.201)上,然后第二次訪問流量被轉發(fā)到了ubuntu(192.168.159.202)上,成功的實現(xiàn)了負載均衡。

這里是使用的權重的方式來實現(xiàn)的,上面的例子中,我將兩臺設備的權重均設置為100,所以,都是每次刷新都會換另外一個設備響應,在實際應用中是可以根據服務器的性能和流量大小來更加靈活的設置權重。

后面再來分別演示一下輪詢算法和ip-hash算法的實現(xiàn)效果

輪詢(Round Robin)

首先介紹一下輪詢算法:每個請求按照時間順序逐一分配到下游的服務節(jié)點,如果其中某一節(jié)點故障,nginx 會自動剔除故障系統(tǒng)使用戶使用不受影響。

輪詢算法的配置非常的簡單,甚至比權重算法都簡單,只需要在web服務器的nginx配置文件中將每個ip后的weight去掉即可

修改后的配置文件:

upstream nginx_boot{
# 30s內檢查心跳發(fā)送兩次包,未回復就代表該機器宕機,請求分發(fā)權重比為1:2   
server 192.168.159.201  max_fails=2 fail_timeout=30s;
server 192.168.159.202  max_fails=2 fail_timeout=30s;
# 這里的IP請配置成你WEB服務所在的機器IP
}
server {
        listen  80;
        server_name 192.168.159.200;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 請求交給名為nginx_boot的upstream上        
                proxy_pass http://nginx_boot;

}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}

可以再次訪問一下:

第一次:

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

第二次:?

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

可以看到還是兩次訪問,分被將流量分到了兩個設備個一次,這也就是輪詢,一人一次

IP 哈希(IP Hash)

對每個請求,針對 ip 進行 hash, 然后分配到后臺節(jié)點,這樣一來,同一 ip 會被固定分配到下游固定服務上。

比如說我現(xiàn)在就要每次都讓訪問centos1(192.168.159.200)的流量只分配到centos2(192.168.159.201)上,不去ubuntu,當然在本例中只有兩臺負載均衡設備,可以直接關閉一臺達到同樣的效果,但是實際應用中我想不會這么簡單,這里還是修改nginx配置文件為:

upstream nginx_boot{
ip_hash;
# 30s內檢查心跳發(fā)送兩次包,未回復就代表該機器宕機,請求分發(fā)權重比為1:2   
server 192.168.159.201 weight=100 max_fails=2 fail_timeout=30s;
server 192.168.159.202 weight=100 max_fails=2 fail_timeout=30s;
# 這里的IP請配置成你WEB服務所在的機器IP
}
server {
        listen  80;
        server_name 192.168.159.200;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 請求交給名為nginx_boot的upstream上        
                proxy_pass http://nginx_boot;

}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}

編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡,安全,中間件,ubuntu,nginx,負載均衡,web安全,網絡安全,中間件

這樣我們無論刷新頁面多少次,響應的始終都是Ubuntu(192.168.159.202)這臺設備響應

最少連接(Least Connections)

最少連接調度算法,對下游服務中連接情況,優(yōu)先選擇連接數最少的服務分配。使用最少連接策略可以避免出現(xiàn)某些服務器負載過重的情況。

最少連接的算法將配置文件修改為:

upstream nginx_boot{
least_conn;
# 30s內檢查心跳發(fā)送兩次包,未回復就代表該機器宕機,請求分發(fā)權重比為1:2   
server 192.168.159.201 weight=100 max_fails=2 fail_timeout=30s;
server 192.168.159.202 weight=100 max_fails=2 fail_timeout=30s;
# 這里的IP請配置成你WEB服務所在的機器IP
}
server {
        listen  80;
        server_name 192.168.159.200;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 請求交給名為nginx_boot的upstream上        
                proxy_pass http://nginx_boot;

}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}

這樣配置后根據least_conn 策略將會我們請求的分配到連接數最少的服務器上。但是這里我們只有三臺設備無法演示連接最少的環(huán)境,就不演示了。

URL 哈希(URL Hash)

url_hash按訪問的URL的哈希結果來分配請求,使每個URL定向到一臺后端服務器,可以進一步提高后端緩存服務器的效率。Nginx本身不支持url_hash,如果需要這種調度算法,則必須安裝Nginx的hash軟件包。

該策略的配置如下:

upstream nginx_boot{
hash $request_uri;
# 30s內檢查心跳發(fā)送兩次包,未回復就代表該機器宕機,請求分發(fā)權重比為1:2   
server 192.168.159.201 weight=100 max_fails=2 fail_timeout=30s;
server 192.168.159.202 weight=100 max_fails=2 fail_timeout=30s;
# 這里的IP請配置成你WEB服務所在的機器IP
}
server {
        listen  80;
        server_name 192.168.159.200;
        location / {
                root   html;        # 配置一下index的地址,最后加上index.ftl。        
                index  index.html index.htm index.jsp index.ftl;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        # 請求交給名為nginx_boot的upstream上        
                proxy_pass http://nginx_boot;

}
        location ~ .*.(gif|jpg|jpeg|bmp|png|ico|txt|js|css){
        root   /usr/local/nginx/html/static;
        expires 7d;}
}

?在配置文件中hash指令將哈希算法設置為URL哈希,$request_uri表示使用請求的URL作為哈希值。因為需要安裝相應的軟件包和環(huán)境不滿足,這里也就不再演示了

到此,Ubuntu下安裝nginx和使用五種算法實現(xiàn)nginx反向代理負載均衡就完成了(^▽^)文章來源地址http://www.zghlxwxcb.cn/news/detail-823820.html

到了這里,關于編譯安裝Nginx和使用五種算法實現(xiàn)Nginx反向代理負載均衡的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【nginx實戰(zhàn)】nginx正向代理、反向代理、由反向代理實現(xiàn)的負載均衡、故障轉移詳解

    【nginx實戰(zhàn)】nginx正向代理、反向代理、由反向代理實現(xiàn)的負載均衡、故障轉移詳解

    本文將要討論以下內容 正向代理與反向代理的基本概念 Nginx正向代理服務的配置指令、Nginx反向代理服務的配置指令 Nginx反向代理服務器的應用——負載均衡、故障轉移 案例分析 ? 正向代理的概念 局域網內的機器借助代理服務訪問局域網外的網站,此代理服務器提供的服務

    2024年01月24日
    瀏覽(31)
  • 【Nginx三】——Nginx實現(xiàn)反向代理

    【Nginx三】——Nginx實現(xiàn)反向代理

    【Nginx一】——Nginx介紹(正向代理 反向代理 負載均衡 動靜分離) 【Nginx二】——Nginx常用命令 配置文件 Nginx如何處理請求 本篇博客主要介紹Nginx如何實現(xiàn)反向代理,會進行介紹什么是反向代理,以及進行實例實現(xiàn)反向代理。 代理服務器來接收網絡上請求,然后將請求轉發(fā)

    2024年02月05日
    瀏覽(22)
  • nginx 離線安裝 https反向代理

    nginx 離線安裝 https反向代理

    1.1 安裝gcc和gcc-c++ 1.1.1下載依賴包 gcc依賴下載鏡像地址: 官網:https://gcc.gnu.org/releases.html 阿里云鏡像站:http://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ CentOS 鏡像站點:https://vault.centos.org/7.5.1804/os/x86_64/Packages/ ?只需下載如下依賴即可: 1.1.2 上傳依賴包 下載完成后,將依賴包上

    2024年02月02日
    瀏覽(26)
  • Nginx安裝Windows、Linux | 正向代理、反向代理、負載均衡

    Nginx安裝Windows、Linux | 正向代理、反向代理、負載均衡

    ??wei_shuo的個人主頁 ??wei_shuo的學習社區(qū) ??Hello World ! Nginx是一個高性能的HTTP和反向代理服務器,也可用作電子郵件代理服務器和通用TCP/UDP代理服務器。它是一個輕量級的Web服務器,可以作為靜態(tài)資源服務器、負載均衡器和反向代理服務器使用。Nginx的優(yōu)點包括高性能、低

    2024年02月09日
    瀏覽(21)
  • nginx配置例子-反向代理實現(xiàn)

    nginx配置例子-反向代理實現(xiàn)

    4.1 反向代理實現(xiàn)(實例1) 4.1.1需要實現(xiàn)的效果 (1)打開瀏覽器,在瀏覽器地址欄輸入地址 www.123.com,跳轉到liunx.系統(tǒng)tomat主頁面中 4.1.2 準備工作 (1)在liunx, 系統(tǒng)安裝 tomcat, 使用默認端口8080. tomcat安裝文件放到 liunx系統(tǒng)中,解壓。 (安裝前,可以使用java -version 查 jdk 是否安裝,

    2024年02月15日
    瀏覽(25)
  • Nginx(一)介紹Nginx、正向代理和實現(xiàn)反向代理的兩個實例

    Nginx(一)介紹Nginx、正向代理和實現(xiàn)反向代理的兩個實例

    中國Nginx官網:https://www.nginx-cn.net/ GitHub地址:https://github.com/nginxinc/ 客戶端想訪問tomcat服務器,只需要訪問ww.baidu.com。對真實的服務器IP是隱藏的 1、反向代理實例一(反向代理,訪問www.123.com) 步驟一:修改主機映射“C:WindowsSystem32driversetchosts” 步驟二:修改Nginx中的配

    2024年02月08日
    瀏覽(25)
  • kkviewfile 實現(xiàn)nginx反向代理+https

    kkviewfile 實現(xiàn)nginx反向代理+https

    3.1 如果訪問出錯,并且報錯信息是下圖 兩種解決方案 第一用我打包好的jar,下載替換就行 代碼是 2021年7月6日,v4.0.0 版本 下載地址:鏈接: https://pan.baidu.com/s/1yqJDa75tokAWQhn_tfCOmA?pwd=ribv 提取碼: ribv 第二你自己在gitee拉取代碼進行處理 如果拉取中報錯 error: RPC failed; curl 18 tr

    2024年02月11日
    瀏覽(24)
  • nginx反向代理及負載均衡的實現(xiàn)

    目錄 1.nginx反向代理 2.nginx負載均衡 3.nginx反向代理及負載均衡實現(xiàn) nginx反向代理 4臺主機都需要的操作: 兩臺服務器操作: 兩臺主機服務器進行測試; nginx負載均衡配置 4.nginx配置其他參數 多虛擬機訪問 后端服務器日志中需要記錄客戶端真實ip nginx設置不同的url訪問不同頁面

    2024年02月14日
    瀏覽(27)
  • Nginx反向代理實現(xiàn)負載均衡webshell

    Nginx反向代理實現(xiàn)負載均衡webshell

    目錄 本實驗所用的環(huán)境: 問題一:由于nginx采用的反向代理是輪詢的方式,所以上傳文件必須在兩臺后端服務器的相同位置上傳相同的文件 問題二:我們在執(zhí)行命令時,無法知道下次的請求交給哪臺機器去執(zhí)行我們在執(zhí)行hostname -i查看當前執(zhí)行機器的IP時,可以看到IP地址一

    2024年02月04日
    瀏覽(34)
  • 利用nginx/apache代理wss 實現(xiàn) 小程序 端口 反向代理

    利用nginx/apache代理wss 實現(xiàn) 小程序 端口 反向代理

    除了用Workerman自身的SSL,也可以利用nginx/apache作為wss代理轉發(fā)給workerman 我就是栽在這大坑里(nginx/apache代理wss,workerman部分就不要設置ssl,否則將無法連接,兩個方法2選1)官方推薦用nginx/apache代理wss 如果是微信小程序,要添加合法域名 格式:wss://域名 結尾不要加/,可以:端

    2024年02月12日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包