Tomcat Nginx动静分离与负载均衡Tomcat

Nginx反向代理Tomcat


环境准备,tomcat是已经部署好jforum网站了  

一台nginx+一台tomcat 

[root@localhost vhosts]# ps -ef | grep tomcat
root      10865      1  1 15:37 pts/1    00:00:37 /usr/java/jdk1.8.0_131/bin/java -Djava.util.logging.config.file=/usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Djava.endorsed.dirs=/usr/local/tomcat/endorsed -classpath /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=/usr/local/tomcat -Dcatalina.home=/usr/local/tomcat -Djava.io.tmpdir=/usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start



[root@localhost vhosts]# ps -ef | grep nginx
root      17755      1  0 16:24 ?        00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nginx     17781  17755  0 16:31 ?        00:00:00 nginx: worker process

 nginx反向代理到tomcat

server {
        listen       80;
        server_name  v1.test.net;
        location / {
        proxy_set_header host $host;
        proxy_pass http://192.168.179.102:8080;
        }
  }

[root@localhost ~]# /usr/local/nginx/sbin/nginx  -s reload

直接在浏览器输入192.168.179.102:80可以看到反向代理成功 ,是不是很简单 ,哈哈

 

 


Nginx和Tomcat负载均衡+动静分离


因为后端只有一台tomcat。如果有多台nginx会负载均衡到多台tomcat。如果需要部署多台tomcat只需要拷贝其目录就行

[root@localhost ~]# cp /usr/local/tomcat/ /usr/local/tomcat_v1 -a
[root@localhost ~]# cd /usr/local/tomcat_v1/
[root@localhost tomcat_v1]# bin/startup.sh
Using CATALINA_BASE:   /usr/local/tomcat_v1
Using CATALINA_HOME:   /usr/local/tomcat_v1
Using CATALINA_TMPDIR: /usr/local/tomcat_v1/temp
Using JRE_HOME:        /usr/java/jdk1.8.0_131
Using CLASSPATH:       /usr/local/tomcat_v1/bin/bootstrap.jar:/usr/local/tomcat_v1/bin/tomcat-juli.jar

Tomcat started.

这个日志是tomcat主日志

[root@localhost tomcat_v1]# ll /usr/local/tomcat_v1/logs/catalina.out
-rw-r--r--. 1 root root 27800 May 30 13:15 /usr/local/tomcat_v1/logs/catalina.out



#可以看到tomcat_v1和之前tomcat端口冲突了,启动失败了

[root@localhost tomcat_v1]# tail -10f /usr/local/tomcat_v1/logs/catalina.out
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:351)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:485)
30-May-2020 13:15:30.798 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-nio-8080"]
30-May-2020 13:15:30.798 INFO [main] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-nio-8009"]
30-May-2020 13:15:30.799 INFO [main] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina
30-May-2020 13:15:31.016 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-nio-8080"]
30-May-2020 13:15:31.016 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-nio-8080"]
30-May-2020 13:15:31.017 INFO [main] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-nio-8009"]
30-May-2020 13:15:31.017 INFO [main] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-nio-8009"]

这个文件是tomcat的配置文件

#修改端口号避免冲突
[root@localhost tomcat_v1]# ll /usr/local/tomcat_v1/conf/server.xml
-rw-------. 1 root root 6458 Nov  9  2016 /usr/local/tomcat_v1/conf/server.xml

#修改三个端口配置
<Server port="8006" shutdown="SHUTDOWN">
<Connector port="8081" protocol="HTTP/1.1"
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />

#修改完后重启即可,保证和之前在一台服务器上的tomcat端口不同即可
[root@localhost tomcat_v1]# /usr/local/tomcat_v1/bin/startup.sh


#由于tomcat_v1拷贝的是tomcat的目录,所以tmocat发布目录和tomcat_v1的发布目录内容一样访问
http://192.168.179.102:8081/forums/list.page
http://192.168.179.102:8080/forums/list.page
都可以得到相同的页面

配置Nginx,将上面新添加的一台添加在负载均衡组里面,同时配置动静分离

#动静分离
[root@localhost tomcat_v1]# cat /usr/local/nginx/conf/nginx.conf

http {
    upstream tomcat_web{
        server 127.0.0.1:8080 max_fails=2 fail_timeout=15;
        server 127.0.0.1:8081 max_fails=2 fail_timeout=15;
    }
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  v1.test.net;

#这里不需要配置root没有意义,因为直接proxy_pass
        
        location / {    
          proxy_pass http://tomcat_web;
	      proxy_set_header host $host;
          proxy_next_upstream error timeout http_500 http_502 http_503 http_504 http_404;
          proxy_set_header X-Real_IP $remote_addr;
        }

#实现tomcat和nginx动静分离
        
         location ~ .*\.(js|css)$ {
          root /usr/local/nginx/html/v1.test.net;
          expires 7d;
          access_log off;
         }
 
         location ~ .*\.(eot|ttf|otf|woff|svg)$ {
           root /usr/local/nginx/html/v1.test.net;
           expires 30d;
           access_log off;
         }
         
          location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
           root /usr/local/nginx/html/v1.test.net;
           expires 30d;
           access_log off;
          }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

再去访问可以看到已经动静分离了,但是在nginx虚拟主机的发布目录下面html/v1.test.net是不存在图片的

[root@localhost ~]# cp -r /usr/local/tomcat/webapps/ROOT/* /usr/local/nginx/html/v1.test.net/

将tomcat目录下面所有文件全部拷贝到nginx发布目录下面,这样静态文件就在发布目录下面了,再次刷新就可以看到图片等静态资源全部访问到了。所以静态资源全部找到了,动态资源就放在上游的tomcat

#动态走
       
location / {  
            proxy_pass http://tomcat_web;
            proxy_set_header host $host;
        }


#静态走
  
  location ~ .*\.(js|css)$ {
        root /usr/local/nginx/html/v1.test.net;
        expires 7d;
        access_log off;
         }

  location ~ .*\.(eot|ttf|otf|woff|svg)$ {
          root /usr/local/nginx/html/v1.test.net;
         expires 30d;
         access_log off;
         }
         
  location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
         root /usr/local/nginx/html/v1.test.net;
         expires 30d;
         access_log off;
          }

 至此动静分离+负载均衡搭建完毕是不是很简单呢?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值