云服务器nginx和tomcat实现动静分离
1.动态和静态的区别
静态请求:不需要访问数据库
动态请求:需要访问数据库,登录静态页:打开一个网页,不需要访问数据库
动态页:打开一个网页,需要访问数据库企业中无论是静态资源还是动态资源,都需要做共享存储
#Tomcat和Nginx的区别
从应用方面 tomcat一般是做'动态解析'才会用得到,支持jsp(Java Server Pages包括html和java,可以写java代码也可以写html和js代码,就像.asp页面一样可以写c#和html还有js)的解析,需要配置JDK支持
nginx,则一般是做'静态'(html和js),本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,比如php,tomcat,或者proxypass到win2008的iis服务器做ASP的动态链接等,
但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器,包括流媒体的也可以做,具体得去官方网站去看;
在性能方面 如果再不做系统调优的情况下 'tomcat一般支持并发(并发是一秒钟的访问量)并不高100个差不多了' 'nginx在静态方面支持并发轻松达几万'
2.动静分离优点
1.降低Web服务器负载,加快网站访问速度
服务器只需编译运行动态文件,大大降低了服务器负载。因为不用加载那些静态文件,所以降低了服务器带宽需求。网站瞬间加载,不会出现卡顿的问题。
2.海量存储空间存储费用最低
服务器在磁盘满了之后,扩容所需的投资是巨大的。
3.流量费用低
服务器流量基本是以带宽计费,费用也是高的不行。如果用服务器存放图片等媒体文件,加载慢不说,还特别贵。
3.准备三台服务器
负载均衡 | nginx |
---|---|
静态资源 | nginx service |
动态资源 | tomcat service |
nginx服务器搭建lnmp架构可以更好的做测试详情可以看lnmp搭建教程
4.部署资源
1.在tomcat访服务器上部署动态资源,tomcat默认的站点目录是在ROOT下
cd /app/tomcat/webapps/ROOT
#创建一个随机数动态资源,但是这里没有用到数据库
[root@cloud2 ROOT]# cat 1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<HTML>
<HEAD>
<TITLE>study</TITLE>
</HEAD>
<BODY>
<%
Random rand = new Random();
out.println("<h1>随机数:<h1>");
out.println(rand.nextInt(99)+100);
%>
</BODY>
</HTML>
测试这个资源是否可以访问到IP/8080/1.jsp
2.在nginx服务器上部署资源
#上传一个图片以jpg或者png等结尾
mkdir -p /app/webtest
[root@cloud1 html]# ls /app/webtest/
1.jpg
修改nginx的服务器配置让它访问到这个jpg图片
#添加这一条匹配规则
location ~* \.(jpg|png)$ {
root /app/webtest;
gzip on;
}
#进行测试
[root@cloud1 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
#测试没错以后再重启服务即可
[root@cloud1 sbin]# systemctl restart nginx.service
测试访问IP/1.jpg
我使用的图片如下图:
5.再负载均衡服务器上整合两台服务器的资源
更改nginx的配置
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
upstream state {
server 47.96.154.231:80;
}
upstream trend {
server 121.41.52.208:8080;
}
server {
listen 80;
server_name lvs;
location ~* \.(jpg|png)$ {
proxy_pass http://state;
proxy_set_header Host $http_host;
}
location ~ \.jsp$ {
proxy_pass http://trend;
proxy_set_header Host $http_host;
}
}
}
#测试
[root@cloud3 sbin]# ./nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@cloud3 sbin]# systemctl restart nginx.service
最后在使用负载均衡服务器的IP/1.jsp或者IP/1.jpg即可访问到相对应资源的服务器