文章目錄
- 1、配置實體
- 1.1、配置實體(代理實體一)
- 1.2、配置實體(代理實體二)
- 1.3、配置實體(負載均衡)
- 1.4、配置實體(動靜分離)
- 1.4.1、相關概念
- 1.4.2、配置步驟
- 2、nginx原理決議
- 2.1、master和worker
- 2.2、worker是如何作業的?
- 2.3、一個master和多個worker的好處
- 2.4、設定多少個worker才最合適?
- 2.5、連接數 worker_connection
1、配置實體
1.1、配置實體(代理實體一)
1. 實作效果
- 打開瀏覽器,在瀏覽器地址欄輸入地址
www.123.com,跳轉到linux系統tomcat主頁,
2. 準備作業
(1)、在linux系統安裝tomcat,使用默認埠 8080,
tomcat安裝檔案放到linux系統中的/usr/src目錄下,解壓,- 進入tomcat的
bin目錄中,./startup.sh啟動tomcat服務器,
(2)、對外開放的埠
# 查看開放的埠號
firewall-cmd --list-all
# 設定開放的埠號
firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8001/top --permanent
# 重啟防火墻
firewall-cmd --reload
(3)、在windows系統中通過瀏覽器訪問tomcat服務器,

3. 訪問程序分析

- 它會首先查看本機中是否有相應的
ip地址的映射,如果沒有的話,才會將請求發送給DNS進行域名決議,
4. 具體配置
第一步:在windows系統的host檔案進行域名和ip地址對應關系的配置,

- 目錄為
C:\Windows\System32\drivers\etc, - 需要添加的內容為
192.168.123.129 www.123.com,
第二步:在nginx進行請求轉發的配置(代理配置)

- 如果我們請求的是
192.168.123.129:80的話,它會把我們的請求轉發到http://127.0.0.1:8080,
5. 最終測驗

- 可以看到我們請求的是
www.123.com,它會幫我們跳轉到192.168.123.129:8080, - 如果滿足上述所說,那么我們就配置成功了,
1.2、配置實體(代理實體二)
1. 實作效果
- 使用nginx進行代理,根據訪問的路勁跳轉到不同埠的服務中,
nginx監聽埠為9001, - 訪問
http://192.168.123.129:9001/edu/直接跳轉到127.0.0.1:8080, - 訪問
http://192.168.123.129:9001/vod/直接跳轉到127.0.0.1:8081,
2. 準備作業
(1)、準備兩個tomcat服務器,一個8080埠,一個8081埠,
(2)、創建檔案夾和測驗頁面,專案默認部署在webapps檔案夾下
3. 具體配置
(1)、在/usr/local/nginx/conf/目錄下找到nginx組態檔,進行代理的相關配置,

server {
listen 9001;
server_name 192.168.123.129;
location ~/edu/ {
proxy_pass http://127.0.0.1:8080
}
location ~/vod/ {
proxy_pass http://127.0.0.1:8081
}
}
(2)、對nginx進行重啟,
# 關閉nginx
./nginx -s stop
# 啟動nginx
./nginx
(3)、開放對外訪問的埠號 9001 8080 8081,
# 查看開放的埠號
firewall-cmd --list-all
# 設定開放的埠號
firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-port=8001/top --permanent
# 重啟防火墻
firewall-cmd --reload
4. 最終測驗


5. location指令說明
- 該指令用于匹配
URL
# 語法如下
location [ = | ~ | ~* | ^~ ] url{
}
=: 用于不含正則運算式的url前,要求請求字串與url嚴格匹配,如果匹配成功,就停止繼續向下搜索并立即處理請求,~:用于表示url包含正則運算式,并且區分大小寫,~*:用于表示url包含正則運算式,并且不區分大小寫,^~:用于不含正則運算式的url前,要求Nginx服務器找到標識url和請求字串匹配度最高的 location后,立即使用此location處理請求,而不再使用location塊中的正則url和請求字串做匹配,
- 注意:如果url包含正則運算式,則必須要有 ~ 或 ~* 標識,
1.3、配置實體(負載均衡)
1. 實作效果
- 瀏覽器地址欄輸入地址
http://192.168.123.129/edu/a.html,負載均衡效果,平均到8080和8081埠中,
2. 準備作業
(1)、準備兩臺tomcat服務器,一臺8080,一臺8081,
(2)、在兩臺tomcat里面webapps目錄下,創建名稱是edu檔案夾,在edu檔案夾中創建頁面a.html,用于測驗,
3. 在nginx組態檔中進行負載均衡的配置
- 在
http全域塊添加以下代碼

upstream myserver{
server 192.168.123.129:8080;
server 192.168.123.129:8081;
}
- 在
監聽80埠的server中添加紅線標注的代碼

server {
listen 80;
server_name 192.168.123.129;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
}
- 需要對
nginx進行重啟,
4. 最終測驗
- 當我們反復多次對
http://192.168.123.129/edu/a.html進行訪問的時候,頁面顯示8080或者8081,
5. nginx分配服務器策略
第一種 輪詢(默認)
- 每個請求時間順序逐一分配到不同的后端服務器,如果后端服務器
down掉,能夠自動剔除,
upstream myserver{
server 192.168.123.129:8080;
server 192.168.123.129:8081;
}
第二種 weight
weight代表權重默認為1,權重越高被分配的客戶端越多,
upstream myserver{
server 192.168.123.129:8080 weight=5;
server 192.168.123.129:8081 weight=10;
}
第三種 ip_hash
- 每個請求按訪問
ip的hash結構分配,這樣每個客戶端固定訪問一個后端服務器,
upstream myserver{
ip_hash;
server 192.168.123.129:8080;
server 192.168.123.129:8081;
}
第四種 fair(第三方)
- 按后端服務器的回應時間來分配請求,
回應時間短的優先分配,
upstream myserver{
server 192.168.123.129:8080;
server 192.168.123.129:8081;
fair;
}
1.4、配置實體(動靜分離)
1.4.1、相關概念
1. 什么是動靜分離?
nginx動靜分離簡單來說就是把動態和靜態請求分開,不能理解成只是單純的把動態頁面和靜態頁面物理分離,嚴格意義上應該是把動態請求和靜態請求分開,可以理解成使用nginx處理靜態頁面,tomcat處理動態頁面,- 主要提高我們的訪問效率,

2. 動靜分離的實作方式
- 就是把靜態檔案單獨部署在獨立的服務器上,主流的推崇方案,
- 動態檔案和靜態檔案混合在一起,通過
nginx分開,
3. 快取
通過 location 指定不同的后綴名實作不同的請求轉發,通過 expires 引數設定,可以使瀏覽器快取過期時間,減少與服務器之前的請求和流量,具體 Expires定義:是給一個資源設定一個過期時間,也就是說無需去服務端驗證,直接通過瀏覽器自身確認是否過期即可,所以不會產生額外的流量,此種方法非常適合不經常變動的資源,(如果經常更新的檔案,不建議使用 Expires 來快取),我這里設定3d,表示在這 3 天之內訪問這個 URL,發送一個請求,比對服務器該檔案最后更新時間沒有變化,則不會從服務器抓取,回傳狀態碼304,如果有修改,則直接從服務器重新下載,回傳狀態碼 200,
1.4.2、配置步驟
1. 準備作業
(1)、在 linux 根目錄下新建一個包含兩個目錄分別為 image 和 www 的 data 目錄,它們用于存放靜態資源,用于進行訪問,

2. 具體配置
- 在
監聽80埠的server中添加紅線標注的代碼

server {
listen 80;
server_name 192.168.123.129;
#charset koi8-r;
#access_log logs/host.access.log main;
location /www/ {
root /data/;
index index.html index.htm;
}
location /image/ {
root /data/;
autoindex on;
}
}
- 需要對
nginx進行重啟,
3. 最終測驗
- 向瀏覽器地址欄輸入
http://http://192.168.123.129/image/

- 有上面圖片的效果是因為我們添加了
autoindex on;
- 向瀏覽器地址欄輸入
http://http://192.168.123.129/www/a.html

2、nginx原理決議
2.1、master和worker

- 可見
nginx啟動的時候,有master和worker行程分別啟動,

2.2、worker是如何作業的?

- 它們是通過爭搶機制實作進行作業,
- 當有請求來的時候,master行程會告知worker行程有請求來了,那么多個worker行程會相互爭搶去轉發請求,
2.3、一個master和多個worker的好處
- 可以使用
nginx -s reload進行熱部署,有利于nginx進行熱部署操作,因為當worker行程沒有請求轉發的時候,它就會根據最新更改的組態檔進行重啟,而有請求轉發的則會等請求轉發了之后再重啟, - 每個worker是獨立的行程,如果其中的一個worker出現問題,其他worker獨立的,繼續進行爭搶,實作請求程序,不會造成服務中斷,
2.4、設定多少個worker才最合適?
nginx和redis都使用了io多路復用機制,- worker的數量和cpu的數量相等最為適宜,
2.5、連接數 worker_connection
1. 發送請求,占用了worker的幾個連接數?
- 2個或者4個,
2. nginx有一個master,有四個worker,每個worker支持最大的連接數為1024,支持的最大并發數是多少?
- 普通的靜態訪問最大并發數是:(最大連接數 * worker的數量)/ 2,
- 而如果是HTTP作為代理來說:(最大連接數 * worker的數量)/ 4,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/385478.html
標籤:其他
上一篇:【參賽作品34】opengauss資料庫的詞法和語法分析
下一篇:回圈計數器行為例外
