通过nginx可以将服务器的文件和目录对外暴露。
1. 访问一个文件
server {
listen 80;
server_name file.one.cn;
access_log /Users/xiaoming/Documents/nginxlog/file.log main;
error_log /Users/xiaoming/Documents/nginxlog/file-error.log debug_http;
location ~ .*\.(jpg)$ {
root /Users/xiaoming/Documents;
}
}
请求时,配置hosts文件
127.0.0.1 file.one.cn
127.0.0.1 file.download.cn
location的配置
~
开启正则匹配模式。.
表示任一字符。*
表示一个或多个。\.
表示普通的.
字符。(jpg)$
表示路径是以jpg结尾的。
- 当浏览器请求
http://file.one.cn/myhome.jpg
将会转化为/Users/xiaoming/Documents/myhome.jpg
获取文件。 - 当浏览器请求
http://file.one.cn/log/myhome.jpg
将会转化为/Users/xiaoming/Documents/log/myhome.jpg
获取文件。
映射的规则是:使用
proxy_pass
去替换域名:ip
。
2. 访问一个目录
server {
listen 80;
server_name file.download.cn;
access_log /Users/xiaoming/Documents/nginxlog/down.log main;
location /svg {
#转到的Nginx文件目录
alias /Users/xiaoming/Documents/nginxlog;
#打开目录浏览功能
autoindex on;
#默认为on,显示出文件的确切大小,单位是bytes
#显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_exact_size off;
#默认为off,显示的文件时间为GMT时间。
#改为on后,显示的文件时间为文件的服务器时间
autoindex_localtime on;
#让浏览器不保存临时文件
add_header Cache-Control no-store;
#避免中文乱码
charset utf-8,gbk;
#希望请求文件是下载而不是显示内容
#add_header Content-Disposition attachment;
}
}
在nginx(2)-到nginx请求如何映射url中有映射的规则的描述。
当用户请求http://file.download.cn/svg
时,因为location中是域名:端口/svg
,proxy_pass
将替换location
====》/Users/xiaoming/Documents/nginxlog
。
当请求http://file.download.cn/svg/home
是,地址将被映射为/Users/xiaoming/Documents/nginxlog/home
。