nginx访问静态资源文件配置
在某些情况下需要以web的方式访问静态文件资源,可以在nginx.conf的server中这样配置:server {listen80;location /file/ {alias /home/;}}虚拟机的IP:192.168.43.52比如/home下的文件是这些:[root@localhost home]# lltotal 8-rw-r--r--. 1 root root199 ..
在某些情况下需要以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)