首頁>技術>

Nginx主要應用

靜態網站

Nginx是一個HTTP的web伺服器,可以將伺服器上的靜態檔案(如HTML、圖片等)通過HTTP協議返回給瀏覽器客戶端;

server{      listen 80 ;#埠號      location /app{ #/app是攔截訪問路徑 http://127.0.0.1:80/app/index.html             root /opt/app;#靜態檔案路徑 root是指ip+埠即 http://127.0.0.1:80/             index index.html;          }}
負載均衡(針對HTTP訪問)

概述

在網站創立初期,我們一般都使用單臺機器對外提供集中式服務隨著業務量的增大,一臺伺服器已經達不到要求,此時就會把多臺機器組成一個叢集對外提供服務。然而,網站對外訪問入口通常只有一個,比如www.web.com,那麼當用戶在瀏覽輸入網址進行訪問時,如何將使用者的請求分發到叢集中不同的機器上呢,這就是負載均衡要做的事情負載均衡通常指:將請求“均勻”分攤倒叢集中多個伺服器節點上執行,這裡的均勻是指在一個比較大的統計範圍內是基本均勻的,並不是完全均勻

負載均衡實現方式

硬體負載均衡比如F5、深信服、Array等優點:有廠商專業的技術服務團隊提供支援,效能穩定;缺點:費用昂貴,對於規模較小的網路應用成本太高軟體負載均衡比如Nginx、LVS、HAProxy等優點:免費開源,成本低廉

Nginx負載均衡

Nginx如何實現負載均衡:

通過配置Nginx的nginx.conf檔案進行配置即可實現

配置步奏

在http模組加上

#負載均衡配置#weight=1 表示權重,用於後端伺服器效能不均的情況,訪問比率約等於權重之比,權重越大訪問機會越多;#max_fails 允許請求失敗的次數,超過次數後,轉發到下一個伺服器,當有max_fails個請求失敗,就表示後端的伺服器不可用,預設為1,將其設定為0可以關閉檢查   #fail_timeout 指定時間內無響應則失敗, 在以後的fail_timeout時間內nginx不會再把請求發往已檢查出標記為不可用的伺服器#upstream是配置nginx與後端伺服器負載均衡非常重要的一個模組,#並且它還能對後端的伺服器的健康狀態進行檢查,若後端伺服器中的一臺發生故障,則前端的請求不會轉發到該故障機器http{    ....   upstream www.myweb.com{   \tserver 127.0.0.1:8080 weight=3 max_fails=2 fail_timeout=30s;     \tserver 127.0.0.1:8081 weight=1 max_fails=2 fail_timeout=30s;   }   ...}

在server加上

...    server{    ...    #負載均衡配置location   location /myweb{     proxy pass http://www.myweb.com;   }   #轉發的地址要和upstream後面的字串相等;   ...   }   ...
Nginx常用的負載均衡策略

輪詢策略(預設)

每個請求輪流分配到不同的後端伺服器,如果後端伺服器宕機了,將自動剔除

upstream www.myweb.com{  \tserver 127.0.0.1:8080 ;    \tserver 127.0.0.1:8081 ;  }

權重策略表示權重,用於後端伺服器效能不均的情況,每個請求按照一定比例分發到不同後端伺服器,訪問比率約等於權重之比,權重越大訪問機會越多;

upstream www.myweb.com{  \tserver 127.0.0.1:8080 weight=3;    \tserver 127.0.0.1:8081 weight=1;  }

ip_hash策略ip_hash也叫IP繫結,每個請求按訪問ip的hash值分配,這樣每個訪問客戶端會固定訪問一個後端伺服器,可以解決 會話session丟失問題session丟失問題也可以用其它方法解決,如redis

upstream www.myweb.com{   \tip_hash;   \tserver 127.0.0.1:8080 ;     \tserver 127.0.0.1:8081 ;   }最少連結策略web請求繪本轉發到連結數量最少的伺服器上![```javascriptupstream www.myweb.com{least_conn;server 127.0.0.1:8080 ;server 127.0.0.1:8081 ;}
負載均衡其它幾個配置

一般上線部署或某臺伺服器出現錯誤的時候使用,將其中一臺伺服器標註後,不影響其它的伺服器的訪問使用

備份其它所有非backup機器dang的時候,菜請求backup伺服器

upstream www.myweb.com{   \tserver 127.0.0.1:8080 ;     \tserver 127.0.0.1:8081 backup ;   }

down機狀態down表示當前的server是down狀態,不參與負載均衡

upstream www.myweb.com{  \t\tserver 127.0.0.1:8080 ;    \t\tserver 127.0.0.1:8081 down;  \t}
靜態代理

把所有靜態資源的訪問改為訪問nginx,而不是tomcat,因為nginx更擅長靜態資源的處理,效能更好,效率更高;所以在實際應用中,一般將靜態資源如:圖片、css、html、js等交給nginx處理,而不是由tomcat處理

Nginx靜態代理的實現通過在nginx.conf配置檔案中新增靜態資源的location如:如:

1.基於檔案字尾

location ~.*\\.(css|js|img|images|html|htm|gif|jpg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {  \t\troot /opt/static;}

將靜態資源放入/opt/static目錄下,然後使用者訪問時由nginx返回這些靜態資源;放置靜態資源的目錄,要注意以下目錄許可權問題,如果許可權不足,給目錄賦予許可權

~表示正則匹配,表示後面的內容可以正則表達匹配;第一個點 .表示任意字元*表示一個或多個字元;.是轉義符| 表示或者$表示結尾
location ~ .*/(css|js|img|images|html|htm|gif|jpg|png){ \t  root /opt/static; }

動靜分離

動靜分離例項負載均衡Nginx配置:
http{   \t \t\t\t\t\t... \t\t\tupstream www.myweb.com{ \t\t\t\tserver 127.0.0.1:8080 ;   \t\t\t\tserver 127.0.0.1:8081; \t\t\t} \t \t\tupstream static.myweb.com{ \t\t\t\tserver 127.0.0.1:8080 ;   \t\t\t\tserver 127.0.0.1:8081; \t\t\t} \t\tserver{ \t\t\tlocation /myweb{ \t\t\t  procy_pass http://www.myweb.com; \t\t\t} \t\t\tlocation ~ .*/(css|js|img|images|html|htm|gif|jpg|png){ \t\t\t  procy_pass http://static.myweb.com; \t\t\t}                   ....... \t\t}   \t}
靜態代理Nginx配置:
location ~ .*/(css|js|img|images|html|htm|gif|jpg|png){\t  root /opt/static;\t}

虛擬主機

虛擬主機就是把一臺物理伺服器劃分為多個“虛擬”的伺服器,這樣一臺物理伺服器就可以當作多個伺服器使用,從而可以配置多個網站;Nginx提供虛擬主機的功能,就是為了讓我們不用安裝多個Nginx,就可以執行多個網站;Nginx配置檔案下,一個server標籤就是一個虛擬主機,想要設定多個虛擬主機,配置多個server節點即可(可以配置200多個);

配置虛擬主機的方式:

基於域名的虛擬主機最常見的
server{\t\tlisten  80;\t\tserver_name www.myweb.com; #此處是域名\t\tlocation /myweb {\t\t\tproxy_pass http://www.myweb.com;\t\t}\t}\tserver{ \t\tlisten  80;\t\tserver_name www.web.com;\t\tlocation /web {\t\t\tproxy_pass http://www.web.com;\t\t}\t}

需要修改一下本地host檔案,位置:C:\\Windows\\System32\\drivers\\etc\\hosts在hosts檔案配置:127.0.0.1 www.myweb.com,前面是ip 後面是自定義的域名

配置3個Tomcat,每個Tomcat一個站點,專案部署在tomcat的ROOT目錄下;配置3個Nginx虛擬主機

1. 第一種方式

server{\t\tlisten  80;\t\tserver_name bejing.myweb.com; #此處是域名\t\tlocation /  {\t\t\tproxy_pass http://bejing.myweb.com;\t\t}\t}\tserver{\t\tlisten  80;\t\tserver_name nanjing.myweb.com; #此處是域名\t\tlocation / {\t\t\tproxy_pass http://nanjing.myweb.com;\t\t}\t}\tserver{ \t\tlisten  80;\t\tserver_name tianjin.myweb.com; #此處是域名\t\tlocation / {\t\t\tproxy_pass http://tianjin.myweb.com;\t\t}\t}

2.第二種方式

配置每個虛擬主機請求轉發所對應的後端伺服器
upstream beijing.myweb.com{   \t\tserver 127.0.0.1:8080 ;     \t}   \tupstream nanjing.myweb.com{   \t\tserver 127.0.0.1:8081 ;     \t}   \tupstream tianjin.myweb.com{   \t\tserver 127.0.0.1:8082 ;     \t}  ```
修改hosts檔案,讓ip(是部署專案的伺服器)指定到一個三個站點的域名168.166.124 beijing.myweb.com168.166.124 nanjing.myweb.com168.166.124 tianjin.myweb.com

講到最後,Nginx是BAT必須掌握的知識點,我給大家整理了份免費的java架構資料,記得領取方式=

連結:https://blog.csdn.net/qq_41681399/article/details/105242736?depth_1-utm_source=distribute.pc_category.none-task-blog-hot-1&request_id=&utm_source=distribute.pc_category.none-task-blog-hot-11

183

Nginx

HTML

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 深入解析Glide生命週期管理