免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

全面掌握Nginx:從基礎安裝到高級負載均衡和高可用性配置

:2024年06月11日 小白典
分享到:

Nginx是一種高性能的HTTP和反向代理服務器,同時提供IMAP/POP3/SMTP服務。無代理不使用代理時,我們發送的請求直接發送給目標服務器。正向代理是客戶端設置的,將請求發送給代理服務器,再由代理服務器轉...

基本概念

1. Nginx介紹

Nginx是轉為性能優化而開發的,它是一個高性能的HTTP和反向代理web服務器,同時也提供了IMAP/POP3/SMTP服務,特點是占有內存少,并發處理能力強,以高性能低資源消耗而聞名,有大量網站都在使用Nginx

2. 無代理

不使用代理時,我們所發送的請求都是通過網絡直接傳達給目標服務器的

3. 正向代理

正向代理是由客戶端設置的,是指將請求發送給代理服務器,再由代理服務器轉發給目標服務器,舉個栗子:我們在玩游戲時,尤其是大型網絡游戲,都會選擇迅游或UU游戲加速器,其實開啟加速器就是在本地設置正向代理

4. 反向代理

反向代理是由目標服務器端設置的,指我們將請求發送給目標服務器時,請求會先到達代理服務器,再將其轉發給目標服務器,因為不是我們主動配置,這個過程我們是無從感知的,這種代理配置是最常見的功能之一,我們使用百度、京東、淘寶等,其實都有使用反向代理,只是我們不知道而已

4.1 負載均衡

負載均衡相關概念可以看一下此文章

Nginx提供了四種負載均衡策略,默認輪詢算法,除此之外還有第三方的策略:fair、url_hash

  • 4.1.1 輪詢

  • 假設有10個請求,負載均衡采用默認方式(即輪詢),請求結果會出現如下圖所示的情況,每個請求按時間順序逐一分配到不同的服務器,若服務器宕掉,會自動剔除

  • 4.1.2 加權輪詢

  • 假設有10個請求,負載均衡采用的是加權輪詢方式,請求結果會出現如下圖所示的情況,需要給每臺服務器配置權重,權重和訪問比率成正比,一般用于服務器性能不均的情況,權重越大越容易被訪問,權重數值只是代表機率,下圖示例中并非指訪問6次必定有3次請求是由②號服務器處理

  • 4.1.3 least_conn

  • 把請求轉發給連接數較少的服務器,輪詢策略把請求平均的轉發給各個服務器,使它們的負載大致相同,但是,有些請求占用的時間較長,會導致其所在的服務器負載較高,這種情況下,least_conn策略就可以達到更好的負載均衡效果,如下圖所示新請求會分給不太繁忙的服務器

  • 4.1.4 ip_hash

  • 假如有5個請求,負載均衡采用的是ip_hash方式,請求結果會出現如下圖所示的情況,每個請求按訪問IP的hash值進行分配,這樣每個訪客固定訪問一個服務器,可以解決Session不共享的問題,但是服務器重啟后,hash值會重新計算,不過這種策略已經很少用了,現在基本都是使用Redis做Session共享

  • 4.1.5 fair(第三方)

  • fair策略是擴展策略,默認不被編譯進nginx內核,使用需先進行編譯安裝,它根據后端服務器的響應時間判斷負載情況,從中選出負載最輕的機器進行分流,這種策略具有很強的自適應性,但實際網絡環境往往沒那么簡單

  • 4.1.6 url_hash(第三方)

  • 和ip_hash策略相似,按訪問url的hash值進行分配,使每個url定向到同一個服務器,要配合緩存命中來使用,使用url_hash可以使同一個請求到達同一臺服務器,一旦緩存了資源,再此收到請求后就會直接從緩存中讀取

  • 4.2 動靜分離

指動態請求跟靜態請求分開,可以理解成使用 Nginx處理靜態頁面,Tomcat 處理動態頁面。動靜分離大致分為兩種,一種是完全把靜態文件獨立成單獨的域名放在獨立的服務器上;另一種是動態跟靜態文件混在一起發布,通過Nginx進行拆分。可以通過location指定不同的后綴名實現不同的請求轉發。通過expires參數設置,可以使瀏覽器緩存過期時間,減少與服務器之前的請求和流量,加快網頁解析速度

4.3 高可用(HA)集群

高可用HA(High Availability)是分布式系統架構設計中必須考慮的因素之一,指通過設計減少系統的停工時間。為防止Nginx失效,需要建立一個備用Nginx,主Nginx和備用Nginx上都要運行HA監控程序,通過傳送諸如“I am alive”的信息來監控對方的運行狀況,當備用Nginx不能在一定的時間內收到這樣的信息時,它就接管主Nginx的服務IP并繼續提供服務;當備用Nginx又從主Nginx收到“I am alive”的信息時,它就釋放服務IP地址,由主Nginx接管工作并繼續提供服務

Nginx安裝

1. 安裝編譯工具及庫文件

dnf install make gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y

Nginx安裝需要進行編譯,編譯依賴gcc環境

Nginx的http模塊使用pcre來解析正則表達式,pcre-devel是pcre的一個二次開發庫

Nginx使用zlib對http包的內容進行gzip

Nginx支持http,也支持https(即在SSL協議上傳輸http),openssl包括SSL協議庫、應用程序以及密碼算法庫

2.安裝Nginx

Nginx下載地址:點擊進入下載頁(http://nginx.org/en/download.html),選擇所需版本

2.1 下載安裝包

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

2.2 解壓

tar -zxvf nginx-1.18.0.tar.gz

2.3 配置

# 先切到nginx-1.18.0目錄下

cd nginx-1.18.0

# 在Nginx根目錄下執行以下命令

./configure

make

make install

2.4 啟動Nginx

先查看Nginx安裝路徑,在sbin目錄下啟動Nginx

# 查看路徑

whereis nginx

# 進入Nginx安裝目錄下的sbin目錄

cd /usr/local/nginx/sbin

# 啟動Nginx

./nginx

Nginx啟動后無任何反饋,通過瀏覽器訪問IP:80,進行驗證

Nginx常用命令

# 在sbin目錄下執行,或者在命令前加上路徑

cd /usr/local/nginx/sbin

# 啟動

./nginx

# 查看配置文件是否正確

./nginx -t

# 重新加載配置文件

./nginx -s reload

# 查看nginx進程

ps aux|grep nginx

# 安全退出

./nginx -s quit

# 停止Nginx

./nginx -s stop

當執行命令出現如下報錯,

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)

首先判斷Nginx是否已啟動,ps -ef | grep nginx查看進程,若是Nginx未啟動,啟動后通常會恢復正常;若問題依然存在,則使用nginx -c參數指定nginx.conf文件的位置,執行以下命名即可解決

/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf

Nginx配置文件說明

配置文件是在conf目錄下nginx.conf文件

舉例:在三臺服務器上分別啟動一個項目

訪問三個項目如下

在192.166.66.21上安裝并運行Nginx

Nginx的配置文件核心區域

# 全局配置 # 作用域是全局

events # Nginx工作事件配置

http # HTTP配置

upstream # 負載均衡服務配置

server # 主機配置

location # URL匹配

全局配置:Nginx服務器整體運行的配置

主要包括配置運行Nginx服務器的用戶(組)、worker process數,進程PID及日志存放路徑,還有類型以及配置文件的引入等

events:Nginx服務器與用戶的網絡連接

主要包括是否開啟對多work process下的網絡連接進行序列化,是否允許同時接收多個網絡連接,選取哪種事件驅動模型來處理連接請求,每個 word process可以同時支持的最大連接數等

http:主要包括代理、緩存和日志定義等大部分功能以及第三方模塊的配置

upstream:負責均衡策略、服務器地址及權重配置等

server:配置虛擬主機的相關參數,一個http中可以有多個server

location:配置請求的路由,對特定的請求進行配置

編輯 /usr/local/nginx/conf/nginx.conf文件

1. 負載均衡配置

1.1 輪詢&加權輪詢

在http配置中添加如下配置

# upstream是配置負載均衡的,名稱是自定義的,server是指服務地址

# weight是指權重,默認輪詢策略的值是相同的,讓weight值出現差異就是在配置加權輪詢

upstream dyd{

server 192.166.66.21:8080 weight=1;

server 192.166.66.22:8081 weight=6;

server 192.166.66.23:8082 weight=3;

}

# 修改server配置,添加proxy_pass地址,地址是負載均衡名稱

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

proxy_pass http://dyd;

}

}

# 因為是三臺服務,需要新增兩個server,如果三臺服務器的名稱不一樣,則需要修改server_name

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

proxy_pass http://dyd;

}

}

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

proxy_pass http://dyd;

}

}

配置完成后,保存退出,重新加載配置./nginx -s reload

最后我們只訪問192.166.66.21,便可訪問到另外兩個項目,每次刷新頁面,根據權重不同Nginx會輪詢訪問三個項目。這就是我們每次發出請求,Nginx根據權重去訪問了不同的服務而得到的結果

# 若服務器名稱相同,重新加載配置文件時會出現如下警告,這個不影響項目運行,可以忽略,或者修改hostname

[root@localhost sbin]# ./nginx -s reload

nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

nginx: [warn] conflicting server name "localhost" on 0.0.0.0:80, ignored

1.2least_conn

# least_conn策略配置

upstream dyd{

least_conn;

server 192.166.66.21:8080;

server 192.166.66.22:8081;

}

least_conn策略可以實現在某些請求耗時較長才能完成的情況下,更公平地控制應用程序實例上的負載

1.3 ip_hash

# ip_hash策略配置

upstream dyd{

ip_hash;

server 192.166.66.22:8081;

server 192.166.66.23:8082;

}

配置后只能訪問到一個項目,因為一旦有服務接收到并處理了請求后,之后所有的請求都將由它負責,不會再分給其它服務器,除非或服務重啟

1.4 fair

# fair策略配置

upstream dyd{

fair;

server 192.166.66.22:8081;

server 192.166.66.23:8082;

}

按照服務器端的響應時間來分配請求,根據服務器的響應時間判斷負載情況,從中選出負載最輕的機器進行分流

1.5 url_hash

# url_hash策略配置

upstream dyd{

hash $request_URL;

server 192.166.66.22:8081;

server 192.166.66.23:8082;

}

同ip_hash相似,按訪問url的hash值進行分配,使每個url定向到同一個服務器,需配合緩存命中來使用,url_hash配置后只能一臺服務器,因為一旦在服務器中緩存了資源,再此收到來自此URL的請求后就會直接從緩存中讀取

2. 動靜分離

在系統中創建兩個目錄,路徑及名稱請自定義,如下圖,在根目錄創建test目錄,并在test目錄下分別創建images、dynamic目錄,在images中放置幾張圖片,在dynamic目錄中放置一個html文件

Nginx配置文件/usr/local/nginx/conf/nginx.conf修改為如下信息,請根據自建文件目錄做適當修改

#配置主機端口及地址,server_name可以是主機名也可以是IP地址

server{

listen       80;

server_name  localhost;

# 配置靜態文件請求路徑

location /images/ {

root   /test/;

index  index.html index.htm;

# 設置目錄瀏覽

autoindex   on;

}

# 配置動態文件請求路徑

location /dynamic/ {

root   /test/;

index  index.html index.htm;

}

配置Nginx文件后會啟動Nginx,通過瀏覽器訪問靜態文件,如下圖,可以成功訪問到

通過瀏覽器訪問html文件,如下圖也可以成功訪問到

3. 高可用(HA)集群

高可用集群解決的是保障應用程序持續對外提供服務的能力,高可用集群并不是保護用戶的業務數據,而是保護用戶的業務程序對外不間斷提供服務的能力,使用高可用集群的目的是把因軟件、硬件、人為因素等造成的故障對業務的影響降低到最低程度

3.1 準備工作

  1. 準備兩臺服務器

  2. 兩臺服務器都需要安裝上Nginx

  3. 兩臺服務器都要安裝Keepalived,安裝命令dnf install keepalived -y

  4. 安裝keepalived后會在/etc/keepalived目錄下生成一個配置keepalived.conf

  5. 在兩個服務器上個啟動一個項目

配置負載均衡,方法就不再具體介紹了,根據上文介紹稍作修改即可,兩個服務器都需要配置

upstream dyd{

server 192.166.66.21:8080;

server 192.166.66.22:8081;

}

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

proxy_pass http://dyd;

}

}

server {

listen       80;

server_name  localhost;

location / {

root   html;

index  index.html index.htm;

proxy_pass http://dyd;

}

}

配置完成使用瀏覽器進行驗證,直接通過192.166.66.21和192.166.66.22都應該能夠訪問到兩個項目,每次刷新頁面項目會變更

3.2 配置keepalived

  1. 配置keepalived.conf文件,修改為以下內容

  2. ! Configuration File for keepalived

  3. global_defs {

  4. notification_email {

  5. acassen@firewall.loc

  6. failover@firewall.loc

  7. sysadmin@firewall.loc

  8. }

  9. notification_email_from Alexandre.Cassen@firewall.loc

  10. # 當前服務IP地址

  11. smtp_server 192.166.66.21

  12. smtp_connect_timeout 30

  13. # 需要在/etc/hosts中添加本地解析127.0.0.1 duan

  14. router_id duan

  15. }

  16. vrrp_script chk_http_port {

  17. # 腳本路徑

  18. scrip "/usr/local/src/nginx_check.sh"

  19. # 檢查腳本執行間隔時間(s)和權重

  20. interval 2

  21. weight 2

  22. }

  23. vrrp_instance VI_1 {

  24. # 備用服務器上需要將MASTER改為BACKUP

  25. state MASTER

  26. # 網卡名

  27. interface ens33

  28. # 主、備服務器的virtual_router_id必須相同

  29. virtual_router_id 51

  30. # 主、備服務器要有不同的優先級,主服務器的值應該大于備用服務器的值

  31. priority 100

  32. advert_int 1

  33. authentication {

  34. auth_type PASS

  35. auth_pass 1111

  36. }

  37. virtual_ipaddress {

  38. # VIP(即虛擬IP地址),需要與當前網絡的網段保持一致

  39. 192.166.66.100

  40. }

  41. }

  42. 主、備服務器的腳本內容如下,腳本信息是負責監控主、備服務器是否正常,以便及時切換服務

  43. #! /bin/bash

  44. A=`ps -C  nginx -no-header | WC -l`

  45. if [ $A -eq 0 ];then

  46. /usr/local/nginx/sbin/nginx

  47. sleep 2

  48. if [ `ps -C nginx --noheader | WC -l` -eq 0 ];then

  49. killall keepalived

  50. fi

  51. fi

  52. 腳本文件配置后,依次啟動nginx和keepalived,兩臺服務都要啟動

  53. # 啟動nginx

  54. cd /usr/local/nginx/sbin

  55. ./nginx

  56. # 啟動keepalived

  57. systemctl start keepalived

  58. 驗證

  59. 啟動主、備服務器后通過192.166.66.21、192.166.66.22以及192.166.66.100應該都能訪問到項目,即使任一服務器上的Nginx和keepalived停止運行了,通過VIP地址192.166.66.100始終都可以訪問到項目

  60. 當項目在主服務器192.166.66.21上啟動后ip中會出現虛擬IP地址,下圖是主服務器192.168.66.21上的IP信息

  1. 當把主服務器192.166.66.21上的Nginx和keepalived停止后虛擬IP會消失,下圖是主服務器192.168.66.21上的IP信息

  1. 查看備用服務器192.166.66.22上出現了虛擬IP,這是因為已成功切換為備用服務器,當啟動主服務器上的Nginx和keepalived后IP又會從備用服務器192.166.66.22上消失,在主服務器上顯示,下圖是備用服務器192.168.66.22上的IP信息

  1. 如果有些迷糊,實操一遍肯定就會理解啦!

  1. 總之,任一Nginx停止運行,另外一個都會自動接管虛擬IP地址(VIP),所以不管哪臺服務器上的Nginx停止運行,我們都可以通過虛擬IP(VIP)訪問到項目

來源:https://mp.weixin.qq.com/s/SLa1MQ5KxTNul5AuGJUNeQ

[我要糾錯]
文:宋聰喬&發表于江蘇
關鍵詞: 基本概念 Nginx 介紹 Nginx 轉為

來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:全面掌握Nginx:從基礎安裝到高級負載均衡和高可用性配置

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利

蘇公網安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司

南京思必達教育科技有限公司版權所有   百度統計

主站蜘蛛池模板: 一级免费黄色片 | 久久99精品九九九久久婷婷 | 国产欧美在线观看不卡 | 蜜桃日本一道无卡不码高清 | 国产黄色大片在线观看 | 日本小视频网站 | 中文字幕在线观看你懂的 | 一本大道香蕉最新在线视频 | 日韩视频网 | 手机看片国产免费永久 | 狠狠干五月天 | 欧美日韩在线一区 | 日韩第五页 | 免费看黄视频 | 91视频一区二区三区 | 无遮挡一级毛片呦女视频 | 国产亚洲人成网站观看 | 亚洲一二三在线 | 中文字幕一区二区精品区 | 国产日韩精品一区在线观看播放 | 717影院理论午夜伦不卡久久 | 亚洲精品无码专区在线播放 | 一级黄视频| 国产成人精品实拍在线 | 台湾一级毛片 | 波多野结衣免费一区二区三区香蕉 | 免费成人高清视频 | 一级aaaaaa片毛片在线播放 | 在线不卡福利 | 亚洲美女中文字幕 | 国产成人在线播放 | 怡春院免费 | 精品国产一区二区二三区在线观看 | 福利午夜视频 | 国产一区二区三区在线观看免费 | 自拍 亚洲 欧美 另类 动漫 | 国产精品成在线观看 | 亚洲精国产一区二区三区 | 免费一级成人免费观看 | 久久精品一区二区三区日韩 | 一级毛片在线直接观看 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產品享最低成本,有需要聯系,
  • 卡爾蔡司鏡片優惠店,鏡片價格低
  • 蘋果原裝手機殼