Tomcat 与Nginx关系

举报
倪平宇 发表于 2019/09/03 17:44:16 2019/09/03
【摘要】 Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。反向代理:客户端本来可以直接通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端。反向代理的作用:负载均衡:将相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是...

Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。

反向代理:

客户端本来可以直接通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,Nginx请求应用服务器,然后将结果返回给客户端。

Tomcat 与Nginx关系


反向代理的作用:

负载均衡:相同的应用部署在多台服务器上,将大量用户的请求分配给多台机器处理。同时带来的好处是,其中一台服务器万一挂了,只要还有其他服务器正常运行,就不会影响用户使用。

Tomcat 与Nginx关系


 Nginx的配置:upstream myapp {
 server 192.168.0.111:8080; # 应用服务器1
 server 192.168.0.112:8080; # 应用服务器2
}
server {
 listen 80;
 location / {
 proxy_pass http://myweb;
 }
}

虚拟主机:如将www.aaa.com和www.bbb.com两个网站部署在同一台服务器上,两个域名解析到同一个IP地址,但是用户通过两个域名却可以打开两个完全不同的网站,互相不影响,就像访问两个服务器一样,所以叫两个虚拟主机。

server {
 listen 80 default_server;
 server_name _;
 return 444; # 过滤其他域名的请求,返回444状态码
}
server {
 listen 80;
 server_name www.aaa.com; # www.aaa.com域名
 location / {
 proxy_pass http://localhost:8080; # 对应端口号8080
 }
}
server {
 listen 80;
 server_name www.bbb.com; # www.bbb.com域名
 location / {
 proxy_pass http://localhost:8081; # 对应端口号8081
 }
}

在服务器8080和8081分别开了一个应用,客户端通过不同的域名访问,根据server_name可以反向代理到对应的应用服务器。

动态静态资源分离:

之前开发web方面的程序时候我们习惯将html、css等资源文件也放置于Tomcat中,用户访问后tomcat需要将请求的这些静态资源文件一并返回给用户。

再者如果有多台同业务逻辑的tomcat服务器的话,同样的资源还需要在每个服务器上放一份,同时也增加了tomcat服务器的网络IO。

如果我们只讲JSP之类的请求交给tomcat,在代理服务器上存放静态资源,当用户的请求非动态资源的时候,我们完全可以将代理服务器的静态资源直接返回给用户,而不去增大Tomcat的压力

tomcat只需要负责逻辑处理动态资源的加载就可以了。


Tomcat的高并发性能很弱,所以在处理静态请求的时候,我们就抛给Nginx处理,而Tomcat专门处理动态请求。

Nginx和Tomcat结合方式

  1. 将所有静态页面交给nginx,动态请求交给后端tomcat处理。

  2. 将所有请求交给后端tomcat服务器处理,只利用Nginx自身的负载均衡功能进行多台tomcat服务器调度流量


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。