nginx访问静态资源的使用说明

在某些情况下需要以web的方式访问静态文件资源,其实有两种方式可以实现:
1. alias

  可以在nginx.conf的server中这样配置:

server {
        listen       80;
 
        location /file/ {
          alias /home/;
        }
}
虚拟机的IP: 192.168.43.52
比如/home下的文件是这些:

[root@localhost home]# ll
total 8
-rw-r--r--. 1 root root  199 Jan  3 08:16 aa.txt
drwxr-xr-x. 3 root root   25 Jan  3 01:54 app
drwxr-xr-x. 6 root root 4096 Jan  3 08:18 backup
drwxr-xr-x. 4 root root   28 Jan  3 00:36 data
[root@localhost home]# 
 
此时在宿主机浏览器输入:http://192.168.43.52/file/aa.txt
实际上访问的是/home/aa.txt


其实还可以使用正则表达式来定义:

location ~ ^/f/(\w+).(\w+)$ {
   alias /home/$1/$1.$2;
}
此时访问http://192.168.43.52/f/data.txt 实际上访问的是/home/data/data.txt

上面的正则表达式的含义是这样:
~ 表示区分大小写的匹配
^ 表示以...开头,上面的正则表示以/f开头
\w+ 匹配字母或数字或下划线或汉字 等价于 '[^A-Za-z0-9_]'
$    表示以...结尾
$1  匹配结果的第1个分组
$2  匹配结果的第2个分组
因此/f/data.txt 会被正则匹配解析成两个分组,第一个分组$1=data,第2个分组$2= data.txt, 因此会动态组成新的路径home/data/data.txt,最终返回这个文件
这样的规则有何用处呢?
目的是返回一个与文件夹同名的文件.

2.root
  
  使用root关键字可以重新定义路径

server {
 
    ...
 
    location /data/ {
        root /home/;
    }
 
}
比如/home/下有这些文件
/home/data/data.txt
/home/data/d.txt
/home/data/firewall.txt
/home/data/man.txt

访问http://192.168.43.52/data/man.txt时实际上访问的是/home/data/main.txt
访问http://192.168.43.52/data/data.txt时实际上访问的是/home/data/data.txt
可以看到这种方式是把url中的一部分内容直接拼接到配置的路径后面,然后进行访问。
 

3.返回结果

经过测试访问不同后缀的文件,返回方式有以下3种情况:
a. 直接打开文件内容
    .txt  .json  图片文件,这些文件可以直接在浏览器里展示出具体内容
b.下载文件
    .log   .gz .zip 文件可以直接下载,
c. 打开文件并渲染
    .html .htm 文件可以被直接打开并且进行渲染

但是需要注意的是,这种方式无法访问目录

以上介绍了这么多,nginx访问静态资源具体有何真正的用处呢,其实一个真实的案例就是可以配置一个location,以便在浏览器上返回某些系统的日志,将会在后续的文章中给出具体的案例。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值