一、概述
1、什么是动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。
动静分离简单的概括是:动态文件与静态文件的分离。
2、Nginx实现动静分离
Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上来说,应该是动态请求跟静态请求分开,可以理解成使用 Nginx 处理静态页面,Tomcat 处理动态页面。
动静分离从目的实现的角度,大致分为两类:
- 一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,这种是目前主流推崇的方案之一。
- 一种是将动态资源和静态资源混合在一起发布,通过 Nginx 来调度分开。
Nginx实现动静分离通过 location参数设置对请求url进行匹配即可。
二、Nginx实现动静分离
静态资源和 Nginx服务放在一个服务器中。
1、准备工作
这里准备两台tomcat服务器,一台服务器为静态资源访问,另一台服务器为动态资源访问。
在静态资源服务器创建 目录,存放一些文件。
#启动tomcat8080:
/usr/local/tomcat8080/bin/startup.sh
#关闭tomcat8080:
/usr/local/tomcat8080/bin/shutdown.sh
2、实例
第一步:修改Nginx的配置文件
vi /usr/local/nginx/conf/nginx.conf
http {
# upstream模块:自定义服务组名
upstream my_tomcat_server{
server 192.168.xxx.x10:8080;
}
server {
listen 80;
#server_name localhost;
server_name 192.168.xxx.xxx;
charset utf-8;
# 静态资源访问
location /static/ {
alias /usr/local/mystatic/;
# autoindex作用为展示目录
autoindex on;
}
# 动态资源访问
location /dy/ {
root html;
index index.html index.htm;
# proxy_pass:代理转发,指定我们配置负载均衡的服务名my_tomcat_server
proxy_pass http://my_tomcat_server/;
# 增加下面内容
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
静态资源的匹配URL规则自定义,比如:
#匹配到http://ip/*.jpg或者*.gif或者*.png或者*.css时,交由静态资源服务器处理
location ~ .*\.(jpg|gif|png|css) {
...
}
第二步:重启Nginx
修改 nginx完之后,保存退出,重启Nginx。
# 先执行停止命令再执行启动命令
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx -s quit
[root@centos7 sbin]# /usr/local/nginx/sbin/nginx
第三步: 浏览器访问
nginx访问静态资源服务器:
添加 charset utf-8; 解决中文名乱码问题。
nginx访问动态资源服务器:
– 求知若饥,虚心若愚。