既然有了Tomcat,为什么还要Nginx?,有tomcat为什么还用nginx

既然有了Tomcat,为什么还要Nginx? 👉 这是一个或许对你有用的社群 🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入「芋道快速开发平台」知识星球。下面是星球提供的部分资料&#xf

这是一个可能对您有用的社区

如果您有任何一对一沟通/面试手册/简历优化/求职相关问题,欢迎来到“御道快速发展平台”知识星球。以下是Planet 提供的一些信息。

《项目实战(视频)》:从书本中学习,从过去的事件中“实践”

《互联网高频面试题》:学习牢记简历,春暖花开

《架构 x 系统设计》:克服挑战,掌握高频面试场景题

《精进 Java 学习指南》:系统学习、主流互联网技术栈

《必读 Java 源码专栏》:找出它是什么以及为什么。

这是一个可能有用的开源项目

国内之星是一个超过10万的开源项目,前端包括管理后端+微信小程序,后端支持单体和微服务架构。

功能包括RBAC权限、SaaS多租户、数据权限、商城、支付、工作流程、大屏报表、微信公众号等等。

启动仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro

云仓库:https://gitee.com/zhijiantianya/yudao-cloud

视频教程:https://doc.iocoder.cn

【国内首批】支持JDK 21 + Spring Boot 3.2.2、JDK 8 + Spring Boot 2.7.18双版本

来源:juejin.cn/post/

7280088532377534505

不需要Nginx,只需要Tomcat的HTTP请求流程

Tomcat服务发布了怎么办

DNS 不能自动删除失败的IP 地址吗?

我可以手动删除有问题的IP 地址吗?

如果我的节点突然挂掉了怎么办?

Nginx 可以执行健康检查和失败重试

10个服务和10个Tomcat集群需要10个域名和30个公网IP吗?

Nginx 虚拟主机和反向代理

是否可以只使用Tomcat而不使用Nginx来构建Web服务?我曾经问过一个愚蠢的问题。今天我将详细解释为什么要使用Nginx。

不用Nginx,只用Tomcat的Http请求流程

当浏览器处理HTTP请求时,它首先通过DNS服务器查找与域名关联的IP地址,然后请求对应的IP地址。以阿里云域名管理服务为例,一个域名最多可以绑定三个IP地址。这三个IP地址必须是公网IP地址,因此您必须首先将Tomcat实例部署在三台公网IP服务器上。

此时您面临的问题是:

DNS域名管理绑定的IP地址有3个限制,所以如果你想把Tomcat扩展到4台机器,这是不支持的。无法满足扩展需求

如果您有10个服务对应10个Tomcat集群,则需要10 * 3个公共IP服务器。成本还是相当高的。

这10个服务必须对应10个域名,映射到相应的Tomcat集群。

10个域名我付不起这个钱(其实可以用二级域名配置DNS映射)

公网服务器作为接入层需要防火墙等安全管理,但如果有30台公网服务器,网络安全运维难度较大。

公网IP地址需另外向中国移动、中国联通运营商或云厂商购买。 30 个公共IP 地址并不便宜。

前后端分离意味着你不能再使用Tomcat作为静态文件服务器,只能使用Nginx或Apache。

上述挑战属于成本、安全、服务扩展等方面。

基于Spring Boot + MyBatis Plus + Vue Element +实现的后端管理系统,支持用户小程序、RBAC动态权限、多租户、数据权限、工作流、第三方登录、支付、短信、商城等功能

项目地址:https://github.com/YunaiV/ruoyi-vue-pro

视频教程:https://doc.iocoder.cn/video/

如果Tomcat服务发布怎么办

服务上线时Tomcat 不可用。对公共服务器的HTTP 请求将失败。 DNS最多可配置3台服务器,导致发布期间故障率为1/3。我的老板会用加特林射击我

DNS不能自动摘掉故障的IP地址吗?

不,DNS只负责解析域名对应的IP地址。不知道服务器上Tomcat的状态,更不知道对应服务器的状态。由于DNS只解析IP,不转发HTTP请求,因此无法知道哪些服务器的故障率较高。也不可能自动删除IP 地址。

我能手动下掉故障的IP地址吗?

这样做是可以的,但是还是有很多失败的请求。以阿里云为例,配置域名映射时,可以去掉对应的IP地址,但需要指定域名映射的缓存时间。默认值为10 分钟。这意味着,即使您在上线前删除了对应的IP,所有客户端也需要10分钟才能获得最新的DNS解析地址。

那么,我可以将TTL 缓存时间更改为较小的值吗?可以,但如果将其更改为较小的大小,则更多的请求将不得不从DNS 服务器获取最新的映射,这将减少总体请求时间的增加。降低用户体验。如果你的老板知道了,你会被骂的。

节点突然挂掉怎么办?

你可以在DNS管理后台手动删除IP地址,但是由于节点突然宕机或者Tomcat崩溃等原因,你可能没来得及删除对应的IP地址,问你的老板,我只好告诉他们。 “好的,请给我10分钟时间进行更改。”

此时,如果有软件可以检查Tomcat 集群的运行状况并重试失败,那就太好了。

巧合的是,这正是Nginx的强项。

基于Spring Cloud阿里巴巴+网关+Nacos+RocketMQ+VueElement+用户小程序实现的后端管理系统,RBAC动态权限、多租户、数据权限、工作流、第三方登录、支付、短信、商城等支持功能的

项目地址:https://github.com/YunaiV/yudao-cloud

视频教程:https://doc.iocoder.cn/video/

Nginx可以健康检查和故障重试

但Tomcat 的情况并非如此。

例如,如果您有两个Tomcat节点,请在Nginx中配置失败重试策略。

上游测试{

server127.0.0.1:8001fail_timeout=60smax_fails=2;#ServerA

server127.0.0.1:8002fail_timeout=60smax_fails=2;#ServerB

}

如果在节点A 上看到“连接被拒绝”(端口已关闭或服务器已关闭),则表示该服务因已释放或服务器已关闭而不可用。此时nginx自动将失败的请求转发给Node B。

假设第二次向A请求仍然失败,总共失败2次。然后,Nginx 自动将节点A 从活动列表中删除60 秒,然后继续将请求2 转发给节点B 进行处理。 60 秒后,尝试再次将请求转发到节点A.重复此循环,直到节点A 恢复正常.

在此过程中,客户端无法检测到故障。这是因为这两个请求都被转发了两次到节点B 并被成功处理。客户端不知道节点A处理失败。这就是Nginx反向代理的优点。也就是说,客户端不需要直接连接到服务器。如果服务器上的各个节点停止或释放,客户端不会受到影响。

Tomcat只是一个Java Web容器,不能做这些事情。

10个服务,10个Tomcat集群,就要10个域名,30个公网IP吗?

以阿里云为例,域名管理后端可以配置二级域名映射,这样一个公网域名可以拆分为10个二级域名。

因此,只使用Tomcat,而不使用Nginx。需要1个公网域名、10个二级域名、30台服务器、30个公网IP。

当我向老板提到这一点时,他说:“你疯了,滚出去,或者想出其他解决方案,想想它的价值,并用它来交换公共网络上的IP”吧。 ”。

Tomcat的DNS到IP地址的映射必须在公网,成本高昂。我感觉很痛苦。如果有软件可以将一个域名映射到30个内网IP就好了。

Nginx 恰好可以实现这一点。

Nginx 虚拟主机和反向代理

例如,将多个二级域名映射到不同的文件目录。

bbs.abc.com,映射到html/bbs

blog.abc.com 映射到html/blog

http{

包括mime.types;

默认类型应用程序/八位字节流;

发送文件。

keepalive_timeout65;

服务器{

听80;

服务器名称www.abc.com;

位置/{

根html/www;

索引index.htmlindex.htm;

}

}

服务器{

听80;

服务器名称bbs.abc.com;

位置/{

根html/bbs;

索引index.htmlindex.htm;

}

}

服务器{

听80;

服务器名称blog.abc.com;

位置/{

根html/博客;

索引index.htmlindex.htm;

}

}

}

例如,将不同的二级域名或URL路径映射到不同的Tomcat集群。

定义两个Tomcat集群,分别为serverGroup1和serverGroup2。

将group1 和group1 分别反向代理路径到serverGroup1 和serverGroup2。

uploadserverGroup1{#定义负载均衡设备的IP和状态

server192.168.225.100:8080;#默认权重值为1

server192.168.225.101:8082weight=2;#值越大负载权重越高

服务器192.168.225.102:8083;

server192.168.225.103:8084backup; #如果其他非备份服务器无法正常运行,该服务器将被认领。这称为热备份。

}

uploadserverGroup2{#定义负载均衡设备的IP和状态

server192.168.225.110:8080;#默认权重值为1

server192.168.225.111:8080weight=2;#值越大负载权重越高

服务器192.168.225.112:8080;

server192.168.225.113:8080backup;#仅当其他非备份服务器无法正常运行时才请求该服务器(称为热备份)。

}

服务器{#设置虚拟主机配置

Listen80;#监听端口

server_namepicture.itdragon.com;#监控地址,多个域名以空格分隔

location/group1{#默认请求后跟“/group1”表示启用反向代理。或者你也可以使用正则表达式

roothtml;#监听地址默认网站根目录位置

proxy_passhttp://serverGroup1;#代理转发

Indexindex.htmlindex.htm;#欢迎页面

Rejected127.0.0.1;#拒绝的IP

allowed192.168.225.133;#允许的IP

}

location/group2{#默认请求后跟“/group2”表示您要启用反向代理。或者你也可以使用正则表达式

roothtml;#监听地址默认网站根目录位置

proxy_passhttp://serverGroup2;#代理转发

Indexindex.htmlindex.htm;#欢迎页面

Rejected127.0.0.1;#拒绝的IP

allowed192.168.225.133;#允许的IP

}

error_page500502503504/50x.html;#定义错误提示页面

location=/50x.html{#配置错误提示页面

根html;

}

}

学习完上述课程后,您将需要Tomcat 和Nginx。

当然,你有足够的钱,无限的资源,无限的公网IP,无限的公网服务器,无限的域名,你就不能使用Nginx,服务发布了,你的网站崩溃了,你也无动于衷。

欢迎加入我的知识星球,全面提升你的技术能力。

参与请“长按”或“扫描”下方二维码。

Planet的内容包括真实的项目实践、面试招聘、源码分析、学习路线等。

如果文章有用,请阅读并转发。

非常感谢您的支持(*^_^*)

#上面是说有了Tomcat为什么还需要Nginx。相关内容来源网络仅供参考。相关信息请参见官方公告。

原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91504.html

(0)
CSDN's avatarCSDN
上一篇 2024年6月22日 下午12:24
下一篇 2024年6月22日 下午12:24

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注