Tomcat 与Nginx

作者: Tommmmm | 来源:发表于2018-11-20 23:45 被阅读239次

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

    反向代理:

    客户端本来可以直接通过HTTP协议访问某网站应用服务器,如果网站管理员在中间加上一个Nginx,客户端请求Nginx,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.comwww.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服务器调度流量

    WEB-INF
    WEB-INF是Java的WEB应用的安全目录。所谓安全就是客户端无法访问,只有服务端可以访问的目录

    相关文章

      网友评论

        本文标题:Tomcat 与Nginx

        本文链接:https://www.haomeiwen.com/subject/dmslzftx.html