使用nginx和tomcat配置反向代理和动静分离

背景

本人主修的编程语言是Java语言,所以最开始接触的Web开发也是JSP技术。使用Java开发的Web应用须要部署在专门的服务器程序上运行,好比Tomcat。可是通常不多会有人将Tomcat做为用户直接访问的服务器的,通常都是使用nginx或者Apache进行反向代理。我使用的是nginx。nginx是一个俄罗斯程序员开发的服务器程序,它自己只能提供静态资源的服务,但它的优势在于并发访问量能够达到很是大的水平。html

反向代理的优势

反向代理的主要优势是提升并发访问数。单独一个Tomcat服务器能提供的并发访问数不高,若是在主机上部署多个Tomcat服务器,使用nginx进行反向代理,动态调整用户的请求到不一样的Tomcat服务器(这个过程称为负载均衡),就可使并发访问量和单个Tomcat服务器相比获得成倍的提高。nginx

动静资源分离也经常和反向代理在一块儿被提起,好比你部署了一个Java Web应用,这是一个动态资源,须要Tomcat提供服务(由反向代理实现),但你的网站上同时还有其余的好比纯HTML的网页、图片等等静态资源,这些静态资源就能够由nginx直接提供给访问者,减小了调用Tomcat而产生的多余资源消耗,一样静态资源能够得到至关大的一个并发访问量。程序员

能够画一张图来更清晰地代表反向代理的工做流程。编程

  1. 用户请求动态资源
    浏览器

  2. 用户请求静态资源
    tomcat

具体配置方法

配置的方法有不少,我以我本身的实现方法来进行讲解。服务器

首先找到nginx的配置文件nginx.conf。若是是使用yum安装的nginx那么它的默认路径是在/etc/nginx/中。在该文件中找到:并发

server {
        listen       80;  
        server_name  localhost;

        location / {
            root   /user/share/nginx/html;
            index  index.html index.htm;
        }  

        ……

也有可能和上述内容有些许不一样,重点是listen 80,只要找到它,就肯定了位置。负载均衡

80端口通常表明http协议,也就是咱们在浏览器上输入网址或者IP地址时默认使用的访问协议。server_name用于配置虚拟主机,咱们如今暂时用不到。重点在location。location后面表明访问的虚拟目录,/表明根目录,,也就是直接输入域名或IP地址访问的目录,以本地主机为例,就是直接在浏览器里输入127.0.0.1。在location的大括号里面,root表明的是虚拟目录映射在本地主机上的实际目录,若是是使用yum方式安装的nginx,那么它的默认访问目录是/user/share/nginx/html。index后面表明的是该目录的首页文件,像示例中就设定了首页文件为index.html或者index.htm。编程语言

假如咱们要用nginx反向代理tomcat,而且但愿在浏览器直接输入主机的IP地址时访问到nginx默认的首页,而输入主机的IP地址/tomcat时访问到tomcat上的内容,咱们就要这样配置。

server {
        listen       80;  
        server_name  localhost;

        location / {
            root   /user/share/nginx/html;
            index  index.html index.htm;
        }  

        location /tomcat {
            proxy_pass   http://127.0.0.1:8080;
        }
        ……

加上去的内容就至关于告诉nginx,在用户访问IP地址/tomcat时,就将访问请求传递到8080端口(由于tomcat默认运行在8080端口,若是修改过tomcat默认运行端口,就将8080改为修改后的端口号)。

这样配置完成后,咱们就同时实现了动静资源分离和反向代理。直接访问IP地址时,nginx给用户的是静态资源,减少计算资源的消耗,访问IP地址/tomcat时则由tomcat提供服务,实现了反向代理。

上面讲的是最基本的配置反向代理和动静分离的方法,还有更加高级的方法,好比设置不一样的三级域名访问到不一样的目录,动静分离特定格式的文件等等。在此我不作展开,你们有兴趣能够去网上寻找其余资料。

相关文章
相关标签/搜索