目錄
一、Nginx負載均衡【重點】
1.1 輪詢
1.2 權重
1.3 ip_hash
二、Nginx動靜分離【重點】
2.1 動態資源代理
2.2 靜態資源代理
官方文檔?nginx
一、Nginx負載均衡【重點
】
Nginx為我們默認提供了三種負載均衡的策略:
輪詢:將客戶端發起的請求,平均的分配給每一臺服務器。
權重:會將客戶端的請求,根據服務器的權重值不同,分配不同的數量。
ip_hash:基于發起請求的客戶端的ip地址不同,他始終會將請求發送到指定的服務器上。
1.1 輪詢
想實現Nginx輪詢負載均衡機制只需要在配置文件中添加以下內容
upstream 名字 {server ip:port;server ip:port;...
}
?
server {listen 80;server_name localhost;location / {proxy_pass http://upstream的名字/;}
}
例如:http {include ? ? ? /etc/nginx/mime.types;default_type application/octet-stream;
?upstream win {server ip:8080;server ip:8081;}
?server {listen ? ? ? 80;server_name localhost;location / {proxy_pass http://win/;}.....略
1.2 權重
實現權重的方式
upstream 名字 {server ip:port weight=權重比例;server ip:port weight=權重比例;...
}
server {listen 80;server_name localhost;location / {proxy_pass http://upstream的名字/;}
}
例如:http {include ? ? ? /etc/nginx/mime.types;default_type application/octet-stream;
?upstream win {server ip:8080 weight=3;server ip:8081 weight=7;}
?server {listen ? ? ? 80;server_name localhost;location / {proxy_pass http://win/;}.....略
1.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的名字/;}
}例如:http {include ? ? ? /etc/nginx/mime.types;default_type application/octet-stream;
?upstream win {ip_hash;server ip:8080;server ip:8081;}
?server {listen ? ? ? 80;server_name localhost;location / {proxy_pass http://win/;}.....略
二、Nginx動靜分離【重點
】
什么是動態資源和靜態資源?
? 動態資源:一般指后端資源
? 靜態資源:一般指html,js,css,img,plugins
什么是動靜分離?
? 將靜態資源部署在nginx上,當接收到請求是訪問靜態資源時,直接在nginx配置的靜態資源目錄下面獲取靜態資源。如果是動態資源,利用nginx 反向代理原理,將請求轉發給后臺應用處理,這就是動靜分離。
Nginx的并發能力公式:
? worker_processes * worker_connections / 4 | 2 = Nginx最終的并發能力
動態資源需要/4,靜態資源需要/2.
Nginx通過動靜分離,來提升Nginx的并發能力,更快的給用戶響應。
2.1 動態資源代理
使用proxy_pass動態代理
# 配置如下
location / {proxy_pass 路徑;
}
2.2 靜態資源代理
使用root靜態代理
# 配置如下
location / {root 靜態資源路徑;index 默認訪問路徑下的什么資源;autoindex on; # 代表展示靜態資源全的全部內容,以列表的形式展開。
}
?
# 先修改docker,添加一個數據卷,映射到Nginx服務器的一個目錄
# 添加了index.html和1.jpg靜態資源
# 修改配置文件
項目是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;
?upstream win {ip_hash;server ip:8080;server ip:8081;}
?server {listen ? ? ? 80;server_name localhost;location / {root ? /html;index ?index.html index.htm;proxy_pass http://win/;}
?location ~* \.(gif|jpg|png)$ {root ? /html/img;}
?}
}