一、Nginx介紹
1.1 引言
-
為什么要學習Nginx?
-
問題場景:
- 客戶端到底要將請求發送至哪臺服務器?
- 如果所有請求都發送到了服務器1,那么其他的服務器貌似都沒什么用
服務器搭建集群后:

服務器搭建集群后,使用Nginx做反向代理服務器

1.2 Nginx背景
- Nginx是由俄羅斯人研發的,應對Rambler的網站,并且2004年發布了第一個版本
- Nginx的特點:
- 穩定性極強,7*24小時不間斷運行,
- Nginx提供了非常豐富的配置實體,
- 占用記憶體小,并發能力強
- 能承受5w并發
二、Nginx安裝(重點來嘍)
2.1 安裝Nginx
思路:使用docker在linux服務器上安裝,如果沒有docker可參考 ↓↓↓(溫馨提示:超簡單)
https://blog.csdn.net/Object_de_Father/article/details/109427164
下面我們擼起袖子開始干代碼:
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:1.13.0-alpine
container_name: nginx
ports:
- 80:80
2.2 Nginx的組態檔
user nginx;
worker_processes 1; //這個值的大小和并發量有關系,值越大支持并發量越大
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;//這個值的大小和并發量有關系,值越大支持并發量越大
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
- nginx.conf 1/32 3%
2.3修改Docker-compose檔案
version: '3.1'
services:
nginx:
restart: always
container_name: nginx
ports:
- 80:80
volumes:
- /root/app/nginx/conf.d/:/ect/nginx/conf.d
三、Nginx的反向代理
3.1 正向代理
- 正向代理時由客戶端設立的,
- 客戶端了解代理服務器和目標服務器都是誰,
- 幫助咱們突破訪問權限,提高訪問的速度,對目標服務器隱藏客戶端的ip地址,
3.2 反向代理
- 反向代理服務器適配實在服務端的,
- 客戶端是不知道訪問的到底是哪一臺服務器,
- 達到負載均衡,并且可以隱藏服務器真正的ip地址
3.3 基于Nginx實作反向代理
- 準備一個目標服務器(tomcat),
- 撰寫nginxdd的組態檔,通過nginx訪問到tomcat服務器
server{
listen 80;
server_name localhost;
#基于反向代理訪問到tomcat服務器
location / {
proxy_pass http://網址:8080/;
}
}
3.4 關于Nginx的location路徑映射
# 1.精準匹配,例如www.baidu.com就能匹配到,www.baidu.com/×××就不行
location = / {
# 匹配和定制規則完全相同的路徑,優先級最高
}
# 2.通用匹配
location /××× {
# 匹配所有以/×××開頭的路徑
}
#3.正則匹配
location ~/××× {
# 匹配所有以/×××開頭的路徑,優先級要高于通用匹配
}
#4.匹配開頭路徑
location ^~ /laojiang/{
# 匹配所有以laojiang開頭的路徑,優先級高于正則匹配
}
#5.匹配指定格式路徑
~*\.(gif|jpg|png)$ {
# 匹配以gif或者jpg或者png為結尾的路徑
}
四、Nginx的負載均衡
4.1 Nginx默認提供了三種負載均衡策略:
-
輪詢法
- 將客戶端發起的請求,平均的分配給每一臺服務器,
-
加權法
- 會將客戶端的請求,根據服務器的權重值不同,分配不同的數量,
-
ip_hash法(源hash法)
- 基于發起請求的客戶端的ig地址不同,他始侄訓將請求發送到指定的服務器上,|
4.2 輪詢法
-
想要實作Nginx輪詢負載均衡機制只需在檔案中添加以下內容
upstream 自定義名稱 { server 路徑(ip:port); server 路徑(ip:port); ... } server{ listen 80; server_name localhost; location / { proxy_pass http://上面upstream的名稱/; } }
4.3 加權法
-
實作加權法的方式,在輪詢法的基礎之上進行
upstream 自定義名稱 { server 路徑(ip:port) weight 加權數;//這里就是和輪詢法重要的區別 server 路徑(ip:port) weight 加權數; ... }
4.4 ip_hash法(源hash法)
-
實作ip_hash法(源hash法)的方式,在輪詢法的基礎之上進行
upstream 自定義名稱 { ip_hash; //加在在這里哦 server 路徑(ip:port); server 路徑(ip:port); ... }
五、Nginx的動靜分離
- Nginx的并發公式:
- worker_processes * connections / 4 | 2 =Nginx最終的并發能力
- 原因:動態資源需要 / 4 ,靜態資源需要 / 2
- Nginx通過動靜分離,來提升Nginx的并發能力,更快的給用戶回應
5.1 動態資源代理
# 配置如下
location / {
proxy_pass 路徑;
}
5.2 靜態資源代理
# 配置如下
location / {
root 靜態資源路徑;
index 默認訪問路徑下的什么資源;
autoindex on; #代表以串列的形式展示靜態資源下的全部內容
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/201853.html
標籤:其他
上一篇:centos7最小化安裝中使用yum命令報錯:14: curl#6 - “Could not resolve host: mirrorlist.centos.org; 未知的錯誤“
