【Nginx教程6】nginx 配置实例 (动静分离)

【Nginx教程6】nginx 配置实例 (动静分离)

静态文件尽量不要放在 /root/ 目录下,以免踩坑.
1
2
https://www.bilibili.com/video/BV1zJ411w7SV?p=12
https://www.bilibili.com/video/BV1zJ411w7SV?p=13
1. 什么是动静分离

动态请求 跟 静态请求 分离,可以理解成使用 nginx处理静态页面,tomcat处理动态页面.

第1种方式: 纯粹把静态文件独立成独立域名.放到独立服务器中.目前比较主流的方案.

第2种方式: 动态跟静态文件混合在一起发布,通过nginx来分开.

通过location指定不同的后缀名实现不同的请求转发.通过 expires参数设置,可以使
游览器缓存过期时间,减少与服务器之前的请求和流量.具体 expires 定义:是给一个资
源设定一个过期时间,也就是说无需去服务端验证,直接通过游览器自身确认是否过期既可,
所以不会产生额外的流量.(此种方法非常适合不经常变动的资源,如果经常更新的文件,
不建议使用expires来缓存),我这里设置3d,表示在这3天之内访问这个URL,发送一个请求,
比对服务器该文件最后更新时间没有变化,则不会从服务器抓取,返回状态码304,如果有修改,
则直接从服务器重新下载,返回状态码200.

2. 准备工作
(1) 在linux系统中准备静态资源.用于进行访问.

1
2
3
4
5
6
7
8
9
10
cd /
mkdir data
cd data
mkdir www
mkdir images
cd /data/images
wget https://pic.bndstone.com/20220524112344.png
mv 20220524112344.png 1.png
cd /data/www
vi a.html

输入如下内容

1
<html>test pages</html>

3. 具体配置.

3-0. 安装nginx

1
https://www.bndstone.com/3201.html

3-1. 在nginx配置文件中进行配置.

1
2
cd /usr/local/nginx/conf
vi nginx.conf

修改如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
    server {
        listen       80;
        server_name  8.218.77.154;              //改成IP
......
        location /www/ {
            root  /data/;
            index  index.html index.htm;
        }

        location /images/ {
            root  /data/;
            autoindex  on;                      //打开 http://8.218.77.154/images/ 就会显示所有图片.
        }
......
}

3-2. 重启nginx

1
2
cd /usr/local/nginx/sbin/
./nginx -s reload

3-3. 放行端口80

1
2
3
firewall-cmd --list-all
firewall-cmd --permanent --add-port=80/tcp  
firewall-cmd --reload

3-4. 阿里云后台放行端口80.

3-5. 测试页面.

1
2
http://8.218.77.154/www/a.html
http://8.218.77.154/images/1.png

备注:

奇怪,文件放在root下,无论如何都打不开.

1
2
/root/data/www/a.html     ---> http://8.218.77.154/www/a.html  
/root/data/images/1.png   ---> http://8.218.77.154/images/1.png
后来改到根目录下,立马就成功.难道这文件不能放到root目录下吗?
1
2
/data/www/a.html     ---> http://8.218.77.154/www/a.html  
/data/images/1.png   ---> http://8.218.77.154/images/1.png

Leave a Reply

Your email address will not be published. Required fields are marked *