html標籤屬性(attribute)和dom元素的屬性(property)
阿新 • • 發佈:2022-05-04
一、引言
1.1 代理問題
客戶端到底要將請求傳送給哪臺伺服器。
1.2 負載均衡問題
如果所有客戶端的請求都發送給了伺服器1,那麼伺服器2將沒有任何意義
1.3 資源優化
客戶端傳送的請求可能是申請動態資源的,也有申請靜態資源,但是都是去Tomcat中獲取的
二、Nginx概述
Nginx的特點:
- 穩定性極強。 7*24小時不間斷執行。
- Nginx提供了非常豐富的配置例項。
- 佔用記憶體小,併發能力強。
三、Nginx的安裝
3.1 安裝Nginx
使用Docker-Compose安裝
version: '3.1' services: nginx: restart: always image: daocloud.io/library/nginx:latest container_name: nginx ports: - 80:80
3.2 Nginx的配置檔案
關於Nginx的核心配置檔案nginx.conf
worker_processes 1; error_log /var/log/nginx/error.log warn; # 以上統稱為全域性塊, # worker_processes他的數值越大,Nginx的併發能力就越強 # error_log 代表Nginx的錯誤日誌存放的位置 events { worker_connections 1024; } # events塊 # worker_connections他的數值越大,Nignx併發能力越強 http { include /etc/nginx/mime.types; default_type application/octet-stream; server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } # location塊 # root:將接收到的請求根據/usr/share/nginx/html去查詢靜態資源 # index: 預設去上述的路徑中找到index.html或者index.htm } # server塊 # listen: 代表Nginx監聽的埠號 # localhost:代表Nginx接收請求的ip } # http塊 # include代表引入一個外部的檔案 -> /mime.types中放著大量的媒體型別 # include /etc/nginx/conf.d/*.conf; -> 引入了conf.d目錄下的以.conf為結尾的配置檔案
3.3 修改docker-compose檔案
為了方便修改Nginx配置,修改yml檔案
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- /opt/docker_nginx/conf.d/:/etc/nginx/conf.d
四、Nginx的反向代理【重點
】
4.1 正向代理和反向代理介紹
正向代理:
- 正向代理服務是由客戶端設立的。
- 客戶端了解代理伺服器和目標伺服器都是誰。
- 幫助咱們實現突破訪問許可權,提高訪問的速度,對目標伺服器隱藏客戶端的ip地址。
反向代理:
- 反向代理伺服器是配置在服務端的。
- 客戶端是不知道訪問的到底是哪一臺伺服器。
- 達到負載均衡,並且可以隱藏伺服器真正的ip地址。
4.2 基於Nginx實現反向代理
準備一個目標伺服器。
啟動了之前的tomcat伺服器。
編寫nginx的配置檔案,通過Nginx訪問到tomcat伺服器。
server{
listen 80;
server_name localhost;
# 基於反向代理訪問到Tomcat伺服器
location / {
proxy_pass http://192.168.199.109:8080/;
}
}
4.3 關於Nginx的location路徑對映
優先順序關係如下:
- location = /路徑:優先順序最高,精準匹配,一旦匹配, 不再去找其他匹配項。
- location ^~ /路徑:優先順序次之,字串匹配,一旦匹配, 不再去找其他匹配項。
- location ~ 正則表示式:如果有多個location的正則能匹配的話,則使用正則表示式最長的那個。
- location ~* 正則表示式:和location ~ 正則表示式相同,不過當前方式不區分大小寫。
- location /路徑:常規方式,匹配字首,優先順序最低。
舉個栗子:
# 直接匹配
location = / {
# 精準匹配,主機名後面不能帶任何的字串
}
# 常規匹配
location /xxx {
# 匹配所有以/xxx開頭的路徑
}
# 正則匹配
location ~ /xxx {
# 匹配所有以/xxx開頭的路徑
}
# 匹配開頭路徑
location ^~ /images/ {
# 匹配所有以/images開頭的路徑,匹配後,不再刪選其他選項
}
# 正則匹配字尾
location ~* \.(gif|jpg|png)$ {
# 匹配以gif或者jpg或者png為結尾的路徑
}
# 全部通配
location / {
# 匹配全部路徑
}
五、Nginx負載均衡【重點
】
Nginx為我們預設提供了三種負載均衡的策略:
輪詢:將客戶端發起的請求,平均的分配給每一臺伺服器。
權重:會將客戶端的請求,根據伺服器的權重值不同,分配不同的數量。
ip_hash:基於發起請求的客戶端的ip地址不同,他始終會將請求傳送到指定的伺服器上。
5.1 輪詢
想實現Nginx輪詢負載均衡機制只需要在配置檔案中新增以下內容
upstream 名字 {
server ip:port;
server ip:port;
...
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream的名字/;
}
}
5.2 權重
實現權重的方式
upstream 名字 {
server ip:port weight=權重比例;
server ip:port weight=權重比例;
...
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream的名字/;
}
}
5.3 ip_hash
ip_hash實現
upstream 名字 {
ip_hash;
server ip:port;
server ip:port;
...
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream的名字/;
}
}
server 47.96.188.147:8080;
server 192.168.1.145:8080;
六、Nginx動靜分離【重點
】
Nginx的併發能力公式:
worker_processes * worker_connections / 4 | 2 = Nginx最終的併發能力
動態資源需要/4,靜態資源需要/2.
Nginx通過動靜分離,來提升Nginx的併發能力,更快的給使用者響應。
6.1 動態資源代理
使用proxy_pass動態代理
# 配置如下
location / {
proxy_pass 路徑;
}
6.2 靜態資源代理
使用root靜態代理
# 配置如下
location / {
root 靜態資源路徑;
index 預設訪問路徑下的什麼資源;
autoindex on; # 代表展示靜態資源全的全部內容,以列表的形式展開。
}
# 先修改docker,新增一個數據卷,對映到Nginx伺服器的一個目錄
# 添加了index.html和1.jpg靜態資源
# 修改配置檔案
七、Nginx叢集
7.1 叢集結構
單點故障,避免nginx的宕機,導致整個程式的崩潰
準備多臺Nginx。
準備keepalived,監聽nginx的健康情況。
準備haproxy,提供一個虛擬的路徑,統一的去接收使用者得請求。
7.2 搭建Nginx叢集
檢視資料中的內容,直接通過執行docker-compose即可