有了Tomcat,为什么还要Nginx?(为什么tomcat启动的项目,只能本地访问)

有了Tomcat,为什么还要Nginx? 只用Tomcat,不用Nginx搭建Web服务,行不行?我曾经提出的愚蠢问题,今天详细给自己解释下,为什么必须用Nginx&#x

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

上游测试{

服务器127.0.0.1:8001 failed_timeout=60s max_fails=2;

服务器127.0.0.1:8002 failed_timeout=60s max_fails=2 服务器B;

}

如果在节点A 上看到“连接被拒绝”(端口已关闭或服务器已关闭),则表示该服务因已释放或服务器已关闭而不可用。此时nginx自动将失败的请求转发给Node B。假设第二次向A请求仍然失败,总共失败2次。然后,Nginx 自动将节点A 从存活列表中删除60 秒,然后继续将请求2 转发到节点B 进行处理。 60 秒后,再次尝试将请求转发到节点A.重复此循环,直到节点A 恢复正常.

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

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

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

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

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

当我向老板提到这件事时,他说:“你疯了,赶紧离开这里,或者想别的办法,我没有钱,用它来换取IP。”在公共网络“酒吧”上。

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

Nginx 恰好可以实现这一点。

如果Tomcat服务发布怎么办

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

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

blog.abc.com 映射到html/blog

http{

包括mime.types。

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

发送文件。

保活超时65;

服务器{

听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。

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

服务器192.168.225.100:8080; ##默认权重值为1。

server 192.168.225.101:8082weight=2; ## 值越大,负载权重越高。

服务器192.168.225.102:8083;

Server 192.168.225.103:8084 Backup; ## 只有当其他处于非备份状态的服务器无法正常运行时才请求该服务器,称为热备份。

}

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

服务器192.168.225.110:8080; ##默认权重值为1。

Server 192.168.225.111:8080 Weight=2; ## 值越大,负载权重越高。

服务器192.168.225.112:8080;

Server 192.168.225.113:8080 Backup; ## 只有当其他处于非备份状态的服务器无法正常运行时才请求该服务器,称为热备份。

}

server { ## 设置虚拟主机配置

监听80;##监听端口

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

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

root html; ## 监听地址的默认网站根目录位置。

proxy_pass http://serverGroup1; ## 代理转发

index index.html index.htm; ## 欢迎页面

拒绝127.0.0.1; ## 拒绝IP

192.168.225.133; ## 允许的IP

}

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

root html; ## 监听地址的默认网站根目录位置。

proxy_pass http://serverGroup2; ## 代理转发

index index.html index.htm; ## 欢迎页面

拒绝127.0.0.1; ## 拒绝IP

192.168.225.133; ## 允许的IP

}

error_page 500 502 503 504 /50x.html;## 定义错误提示页面

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

根html;

}

}

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

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

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

#上面是部署Tomcat,但是为什么需要Nginx呢,关联的内容源网络仅供参考。相关信息请参见官方公告。

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

(0)
CSDN的头像CSDN
上一篇 2024年7月5日
下一篇 2024年7月5日

相关推荐

发表回复

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