淺談Nginx以及特性


Nginx以及特性

1.Nginx是什么?

Nginx是一個高性能的HTTP和反向代理輕量級web服務器,特點:占用內存少,處理並發能力強。Nginx專為性能優化而開發,性能是其最重要的考量 ,能經受高負載的考驗,能支持高達50000個連接並發數。

注 : Nginx安裝前面有講到,未安裝的可以參考之前的說明

2.Nginx(Linux環境)基本命令

1.進入默認安裝目錄:cd /usr/local/nginx/sbin

2.啟動Nginx,./nginx

3.關閉nginx,./nginx -s stop

4.重新加載,./nginx -s reload

3.Nginx配置文件精簡(/usr/local/nginx/conf)

1.全局塊:從配置文件開始到 events 塊之間的內容,主要會設置一些影響 nginx 服務器整體運行的配置指令,主要包括配置運行 Nginx 服務器的用戶(組)、允許生成的 worker process 數,進程 PID 存放路徑、日志存放路徑和類型以及配置文件的引入等;

2.event塊

3.http塊 :Nginx 服務器配置中最頻繁的部分,代理、緩存和日志定義等絕大多數功能和第三方模塊的配置都在這里。需要注意的是:http 塊也可以包括 http 全局塊、server 塊

3.1 http全局塊:http 全局塊配置的指令包括文件引入、MIME-TYPE 定義、日志自定義、連接超時時間、單鏈接請求數上限等;

3.2 sever塊:每個 http 塊可以包括多個 server 塊,而每個 server 塊就相當於一個虛擬主機。而每個 server 塊也分為全局 server 塊,以及可以同時包含多個 locaton 塊。

3.2.1 sever全局塊:最常見的配置是本虛擬機主機的監聽配置和本虛擬主機的名稱或 IP 配置

3.2.2 location塊:一個 server 塊可以配置多個 location 塊。主要作用是基於 Nginx 服務器接收到的請求字符串(例如 server_name/uri-string),對虛擬主機名稱(也可以是 IP 別名)之外的字符串(例如 前面的 /uri-string)進行匹配,對特定的請求進行處理。地址定向、數據緩存和應答控制等功能,還有許多第三方模塊的配置也在這里進行;

location匹配規則 參考:https://blog.csdn.net/xiaobaixiongxiong/article/details/89455850

4.反向代理

實例一:

 

實例二:一台Nginx  二個Tomcat服務1、修改連接端口

啟動兩台tomcat服務:修改server.xml 

<Server port="8005" shutdown="SHUTDOWN"> -- 將8005修改為9005
2、修改訪問端口號
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> -- 將8080端口修改為8081端口
3、修改AJP連接端口
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> -- 將8009修改為9009

 

5.負載均衡

客戶端請求訪問應用服務器,最簡單的就是n對1模式,n個客戶端同時訪問同一個應用服務器,當同一時間的並發數量較大時,應用服務器處理不過來,很有可能會造成服務器宕機,如果有且僅有一台服務器時,這個服務器掛了,那么應用就會陷於崩潰的狀態.;解決方案便可以橫向擴充n台應用服務器,並且客戶端訪問與應用服務器中間加上負載均衡配置,負載均衡能實現的效果主要有三個:

1、轉發功能

按照一定的算法【權重、輪詢】,將客戶端請求轉發到不同應用服務器上,減輕單個服務器壓力,提高系統並發量。

2、故障移除

通過心跳檢測的方式,判斷應用服務器當前是否可以正常工作,如果服務器期宕掉,自動將請求發送到其他應用服務器。

3、恢復添加

如檢測到發生故障的應用服務器恢復工作,自動將其添加到處理用戶請求隊伍中。

這里我使用兩台tomcat作為兩台服務器演示測試:

修改tomcat默認的歡迎首頁,將tomcat默認的歡迎頁面改成自己項目的頁面

進入到tomcat的安裝路徑,修改conf/server.xml

<Context path="" docBase="/operation/tomcat8080/apache-tomcat-7.0.70/webapps/yee" debug="0"/> 增加默認訪問地址路徑

修改 conf/web.xml

重啟tomcat服務即可生效

5.1負載均衡策略

5.1.1 輪循(默認)

 每個請求按時間順序逐一分配到不同的應用服務器,如果應用服務器down掉,能自動剔除。 

 5.1.2 權重

通過配置權重,指定輪詢幾率,權重和訪問比率成正比,用於應用服務器性能不均的情況。默認:weight=1 

5.1.3 ip_哈希算法

每個請求按訪問ip的hash結果分配,這樣每個訪客固定訪問一個應用服務器,可以解決session共享的問題

5.1.4 least_conn 最少連接

 

把請求轉發給連接數較少的后端服務器。輪詢算法是把請求平均的轉發給各個后端,使它們的負載大致相同;但是,有些請求占用的時間很長,會導致其所在的后端負載較高。這種情況下,least_conn這種方式就可以達到更好的負載均衡效果

upstream dynamic_zuoyu {
  least_conn;  #把請求轉發給連接數較少的后端服務器
  server localhost:8080  weight=2; #tomcat 7.0
  server localhost:8001; #tomcat 8.0
  server localhost:8082 backup; #tomcat 8.5
  server localhost:8083  max_fails=3 fail_timeout=20s; #tomcat 9.0
}

5.1.5 fair(第三方)

按后端服務器的響應時間來分配請求,響應時間短的優先分配

 

 

 5.1.6 url_hash(第三方)

按訪問url的hash結果來分配請求,使每個url定向到同一個后端服務器,后端服務器為緩存時比較有效

fail_timeout

max_fails結合使用

max_fails

設置在fail_timeout參數設置的時間內最大失敗次數,如果在這個時間內,所有針對該服務器的請求都失敗了,那么認為該服務器會被認為是停機了

fail_time

服務器會被認為停機的時間長度,默認為10s

backup

標記該服務器為備用服務器。當主服務器停止時,請求會被發送到它這里

down

標記服務器永久停機了

6 動靜分離

簡單來說,即動態請求和靜態請求分開處理,沒有嚴格物理空間的隔離,從實現角度可以大致分為兩種:

(1)純粹把靜態文件獨立成單獨的域名,放在獨立的服務器;

(2)動態跟靜態文件混合在一起發布,通過 nginx 來分開;

案例:在linux根目錄創建 mkdir -p /data/www :存放靜態文件    mkdir -p /data/image :存放圖片

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM