尚硅谷nginx教程-6nginx配置示例-动静分离
1. 动静分离的定义
nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成知识单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态跟静态请求分开,可以理解成使用nginx处理静态页面,tomcat处理动态页面。
目前动静分离从实现角度来讲大致分为两种:
- 一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。
- 另外一种是动态跟静态文件混合在一起发布,通过nginx来分开。
2. 动静分离的目的:
- 提高访问的效率,让我们的请求更高效。动态就专门访问tomcat,静态就专门反问静态资源服务器。
- 设置浏览器缓存提高访问效率:通过location指定不同的后缀名实现不同的请求转发,通过expires参数设置,可以使浏览器在缓存过期时间内,减少服务器之间的请求和流量。具体Expires定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。(如果经常更新的文件,不建议使用Expire来缓存)。如果设置3d,就表示这3天之内访问URL,发送一个请求,比对服务器该文件最后更新时间是否变化。未变化,则不会从服务器抓取,返回状态码304;如果有修改,则直接从服务器重新下载,返回状态200.
3.配置实例
3.1 目标
通过nginx访问到文件,而不通过tomcat
3.2 准备工作
在/data/创建www和image2个目录。www用于存放网页,image用于存放图片。
static_a.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8">
</head>
<body>
<h1>这是一个静态页面,啥都没有</h1>
</body>
</html>
下载图片
# 长城汽车的看到,请给个5毛费用
wget -O h6_2.jpg https://car3.autoimg.cn/cardfs/product/g3/M03/1B/9B/1024x0_1_q95_autohomecar__ChsEm14JuFeAC7HxAAlezLa9rk8374.jpg
3.3 配置过程
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
# 负载均衡1
upstream myserver {
server IP地址:8080;
server IP地址:8081;
}
server {
listen 80;
server_name IP地址;
#charset koi8-r;
#access_log logs/host.access.log main;
# 动静分离
location /www/ {
root /data/;
}
location /image/ {
root /data/;
autoindex on;
}
# 负载均衡2
location / {
root html;
proxy_pass http://myserver;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# 反向代理
server {
listen 9001;
server_name IP地址;
location ~ /edu/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /vod/ {
proxy_pass http://127.0.0.1:8081;
}
}
3.4 重启nginx,验证结果
./sbin/nginx -s reload