一、tomcat
tomcat(全稱為Apache Tomcat)是一個開源的Java Web應用服務器,它實現(xiàn)了Java Servlet、JavaServer Pages(JSP)和Java WebSocket等JavaEE規(guī)范,提供了一個運行Java Web應用的容器。Tomcat由Apache軟件基金會開發(fā)和維護,是一個非常流行的Web應用服務器。
Tomcat的主要特點包括:
- Servlet容器:Tomcat是一個Servlet容器,可以部署和運行基于Servlet技術的Web應用程序。
- JSP支持:Tomcat支持JavaServer Pages(JSP),可以編譯和執(zhí)行JSP頁面。
- 易于配置和部署:Tomcat提供了簡單易用的配置文件,可以靈活地配置和部署Web應用程序。
- 多版本支持:Tomcat可以同時運行多個版本的Java Servlet和JSP規(guī)范,方便開發(fā)者在不同的項目中使用不同的規(guī)范版本。
- 嵌入式支持:Tomcat可以作為一個嵌入式服務器集成到Java應用程序中,方便開發(fā)者在自己的應用程序中內(nèi)嵌Tomcat服務器。
- 安全性:Tomcat提供了安全性功能,包括基于角色的訪問控制、SSL/TLS支持等。
- 擴展性:Tomcat可以通過插件和擴展來增加功能和支持,例如支持WebSockets、JNDI、JMX等。
Tomcat是一個成熟穩(wěn)定的Web服務器,被廣泛應用于Java Web應用程序的開發(fā)和部署。它具有良好的性能和可靠性,提供了豐富的功能和配置選項,適用于各種規(guī)模的應用程序。
二、 nginx
2.1 代理問題
客戶端到底要將請求發(fā)送給哪臺服務
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TmpL3Ur8-1687195362853)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.2 負載均衡問題
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-cwZNP5Ep-1687195362854)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.3 資源優(yōu)化
客戶端發(fā)送的請求可能是申請動態(tài)資源的,也有申請靜態(tài)資源,但是都是去Tomcat中獲取的
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-jpTlPlQ2-1687195362855)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.4 Nginx處理
靜態(tài)資源尺寸不大放在Nginx 如淘寶的圖片太大放不進去
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-b8M3PWgl-1687195362856)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.5 Nginx的特點:
- 穩(wěn)定性極強。 7*24小時不間斷運行。
- Nginx提供了非常豐富的配置實例。
- 占用內(nèi)存小,并發(fā)能力強。
2.6 Nginx的安裝
/usr/local/nginx/ docker-compose.yml
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-vcIPJldR-1687195362857)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
./conf 在當前目錄創(chuàng)建conf.d目錄 數(shù)據(jù)卷
version: '3.1'
services:
nginx:
restart: always
image: daocloud.io/library/nginx:latest
container_name: nginx
ports:
- 80:80
volumes:
- ./conf.d/:/etc/nginx/conf.d
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mQoZG17N-1687195362857)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
2.7 Nginx的配置文件
關于Nginx的核心配置文件nginx.conf 在容器內(nèi)部的etc/nginx/nginx.conf
worker_processes 1;
error_log /var/log/nginx/error.log warn;
# 以上統(tǒng)稱為全局塊,
# worker_processes他的數(shù)值越大,Nginx的并發(fā)能力就越強
# error_log 代表Nginx的錯誤日志存放的位置events {
worker_connections 1024;
}
# events塊
# worker_connections他的數(shù)值越大,Nignx并發(fā)能力越強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:將接收到的請求根據(jù)/usr/share/nginx/html去查找靜態(tài)資源
? # index: 默認去上述的路徑中找到index.html或者index.htm
}
# server塊
# listen: 代表Nginx監(jiān)聽的端口號
# localhost:代表Nginx接收請求的ip
}
# http塊
# include代表引入一個外部的文件 -> /mime.types中放著大量的媒體類型
# include /etc/nginx/conf.d/*.conf; -> 引入了conf.d目錄下的以.conf為結(jié)尾的配置文件
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-U9UNPRno-1687195362858)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
做了數(shù)據(jù)卷 宿主主機在conf.d 目錄下的conf.d結(jié)尾文件也會引入到配置文件中。
2.8 Nginx的反向代理
正向代理和反向代理介紹
正向代理
- 正向代理服務是由客戶端設立的。
- 客戶端了解代理服務器和目標服務器都是誰。
- 幫助咱們實現(xiàn)突破訪問權限,提高訪問的速度,對目標服務器隱藏客戶端的ip地址。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-wkzzyFm5-1687195362858)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
例如 vpn就是正向代理
2.9 反向代理:
- 反向代理服務器是配置在服務端的。
- 客戶端是不知道訪問的到底是哪一臺服務器。
- 達到負載均衡,并且可以隱藏服務器真正的ip地址。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-CvIRcP3V-1687195362859)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.10 基于Nginx實現(xiàn)反向代理
準備一個目標服務器。
啟動了之前的tomcat服務器。
編寫nginx的配置文件,通過Nginx訪問到tomcat服務器。
訪問本地服務器 80端口相當于訪問 8080 直接輸入ip啥也不加相當于訪問80端口,80端口是默認端口
server{
listen 80;
server_name localhost;
# 基于反向代理訪問到Tomcat服務器
location / {
proxy_pass http://192.168.199.109:8080/;
}
}
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-QXbrZj78-1687195362859)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SRf4tPlf-1687195362860)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
2.11 關于Nginx的location路徑映射
優(yōu)先級關系如下
# 1. 直接匹配
location = / {
# 精準匹配,主機名后面不能帶任何的字符串
}# 2. 通用匹配
location /xxx {
# 匹配所有以/xxx開頭的路徑
}# 3. 匹配開頭路徑
location ^~ /images/ {
# 匹配所有以/images開頭的路徑
}# 4. 正則匹配
location ~ /xxx {
# 匹配所有以/xxx開頭的路徑
}# 5. 匹配后綴
location ~* .(gif|jpg|png)$ {
# 匹配以gif或者jpg或者png為結(jié)尾的路徑
}# 6. 全部通配
location / {
# 匹配全部路徑
}優(yōu)先級從上到下
2.12 負載均衡
Nginx為我們默認提供了三種負載均衡的策略:
- 輪詢:將客戶端發(fā)起的請求,平均的分配給每一臺服務器。
- 權重:會將客戶端的請求,根據(jù)服務器的權重值不同,分配不同的數(shù)量。
- ip_hash:基于發(fā)起請求的客戶端的ip地址不同,他始終會將請求發(fā)送到指定的服務器上。
輪詢
想實現(xiàn)Nginx輪詢負載均衡機制只需要在配置文件中添加以下內(nèi)容
一個一個挨個輪著來
upstream 名字 {
server ip:port;
server ip:port;
...
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream的名字/;
}
}
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-uWd2pI89-1687195362860)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
權重
按照權重比例來 ,假如說三七 則10個鏈接 三七分
upstream 名字 {
server ip:port weight=權重比例;
server ip:port weight=權重比例;
...
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream的名字/;
}
}
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-mPFhCxaJ-1687195362860)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
ip_hash
hash(ip)====> 唯一的
client: hash( 192.168.75.135) ===>server 1
upstream 名字 {
ip_hash;
server ip:port;
server ip:port;
...
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://upstream的名字/;
}
}
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-d30SJY2K-1687195362861)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
通過哈希算法 算出唯一訪問地址,始終訪問這一個地址
負載均衡示例
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-UlizRm3f-1687195362861)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.13 Nginx動靜分離
Nginx的并發(fā)能力公式:
worker_processes * worker_connections / 4 | 2 = Nginx最終的并發(fā)能力
動態(tài)資源需要/4,靜態(tài)資源需要/2.
Nginx通過動靜分離,來提升Nginx的并發(fā)能力,更快的給用戶響應。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ST16aIwC-1687195362861)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
layui html css 圖片 是靜態(tài)資源
jsp是動態(tài)資源
動態(tài)資源代理
使用proxy_pass動態(tài)代理
# 配置如下
location / {
proxy_pass 路徑;
}
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Lb9Id1au-1687195362862)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
靜態(tài)資源代理
使用root靜態(tài)代理
# 配置如下
location / {
root 靜態(tài)資源路徑;
index 默認訪問路徑下的什么資源;
autoindex on; # 代表展示靜態(tài)資源全的全部內(nèi)容,以列表的形式展開。
}
# 先修改docker,添加一個數(shù)據(jù)卷,映射到Nginx服務器的一個目錄
# 添加了index.html和1.jpg靜態(tài)資源
# 修改配置文件
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KjOkQLiX-1687195362863)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]
做數(shù)據(jù)卷 當前目錄的html 映射容器內(nèi)部的/usr/share/nginx/html
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-EamkzFRC-1687195362863)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
下圖是**/etc/nginx/conf.d/*.conf結(jié)尾的文件,也可以加進配置文件中 ,這個地址也在容器內(nèi)部,**
下圖表示 動態(tài)資源訪問192.168.59.12:8080 靜態(tài)資源訪問root aa表示只能訪問aa開頭的文件
如 aa.html 這時在數(shù)據(jù)卷的宿主主機上自己創(chuàng)建的html地址 里加入aa.html, 訪問
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Xm0vlksl-1687195362863)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-myIBTh4p-1687195362863)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TA4ZuvSz-1687195362864)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-ss6kpSoh-1687195362864)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.14 Nginx集群
集群結(jié)構(gòu)
單點故障,避免nginx的宕機,導致整個程序的崩潰
準備多臺Nginx。
準備keepalived,監(jiān)聽nginx的健康情況。
準備haproxy,提供一個虛擬的路徑,統(tǒng)一的去接收用戶得請求。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-rYoAOKNa-1687195362865)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-X6FOVpXv-1687195362865)(data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==)]編輯
2.14 Nginx集群
集群結(jié)構(gòu)
單點故障,避免nginx的宕機,導致整個程序的崩潰
準備多臺Nginx。
準備keepalived,監(jiān)聽nginx的健康情況。
準備haproxy,提供一個虛擬的路徑,統(tǒng)一的去接收用戶得請求。
[外鏈圖片轉(zhuǎn)存中…(img-rYoAOKNa-1687195362865)]編輯
[外鏈圖片轉(zhuǎn)存中…(img-X6FOVpXv-1687195362865)]編輯文章來源:http://www.zghlxwxcb.cn/news/detail-498643.html
資料里直接拉進來一個文件夾 運行就行文章來源地址http://www.zghlxwxcb.cn/news/detail-498643.html
到了這里,關于服務器中間件的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!