尚硅谷nginx教程-6nginx配置示例-动静分离

1. 动静分离的定义

nginx动静分离简单来说就是把动态跟静态请求分开,不能理解成知识单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态跟静态请求分开,可以理解成使用nginx处理静态页面,tomcat处理动态页面。
目前动静分离从实现角度来讲大致分为两种:

  • 一种是纯粹的把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案。
  • 另外一种是动态跟静态文件混合在一起发布,通过nginx来分开。

2. 动静分离的目的:

  1. 提高访问的效率,让我们的请求更高效。动态就专门访问tomcat,静态就专门反问静态资源服务器。
  2. 设置浏览器缓存提高访问效率:通过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

访问 http://IP地址/www/static_a.html

http://IP地址/image/

原文地址:https://www.cnblogs.com/csj2018/p/12675987.html