IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Nginx搭建文件服务器以及文件在线预览和强制下载 -> 正文阅读

[系统运维]Nginx搭建文件服务器以及文件在线预览和强制下载

文件服务

直接查看server块配置

server {
    listen    1234;
    server_name 127.0.0.1;
    charset utf-8; # 避免中文乱码 
    location / {
	    root /download;
        autoindex on; # 索引,开启目录文件列表
        autoindex_exact_size on; # 显示文件大小 
        autoindex_localtime on; # 显示文件时间
        # 密码,按需开启
        auth_basic "Some description";
    	auth_basic_user_file /nginx/passwd;	# 自定义一个绝对路径的密码文件
    	
    access_log  /var/log/nginx/download-access.log;
    error_log   /var/log/nginx/download-error.log;
	}
}

到这里就搭建好了简单的文件服务,可以在浏览器中输入ip或域名访问目录文件了。
127.0.0.1

身份认证

如果不希望自己的文件被他人所下载和访问,可以增加一下身份验证。幸运的是,Nginx 已经为我们提供了简单的身份认证的功能,开箱即用。

概述

ngx_http_auth_basic_module模块允许通过使用“HTTP基本认证”协议验证用户名和密码来限制对资源的访问。
访问还可以根据地址、子请求的结果或JWT进行限制。同时通过地址和密码限制访问由满足指令控制。

配置Nginx

location块中添加以下配置:

location / {
	auth_basic "Some description";
	auth_basic_user_file /nginx/passwd;	# 自定义一个绝对路径的文件

生成密码

为了安全考虑,auth_basic 功能必须在起“用户名:密码”文件中使用经过 Hash 的密码值,故需要对明文密码进行处理。可以选择的生成工具有 Apache 服务器发行版中提供的 htpasswd 工具,以及 openssl passwd 命令。

echo "账户名:$(openssl passwd 密码)" > /nginx/passwd
$ echo "nginx:$(openssl passwd 123456)" > /nginx/passwd
$ cat /nginx/passwd
nginx:Kj1uQfCRjT/9g

nginx -s reload 重启一下nginx服务就可以了。

开启文件在线预览和强制下载

nginx 默认配置下, .txt是可以在线打开,而.md 会有弹窗,也就是下载。

在上面的location代码块中,添加以下配置

#################default_type 方式 ##################
# 配置在线预览
if ($request_filename ~* ^.*?\.md {
    default_type text/plain; 
    charset utf-8;
}
# 配置下载文件模式
if ($request_filename ~* ^.*?\.txt {
    types        { }
    default_type application/octet-stream; 
}
#################add_header  方式 ##################
# 配置在线预览
if ($request_filename ~* ^.*?\.md {
    add_header Content-Type "text/plain; 
    charset=utf-8";
}
# 配置下载文件模式
if ($request_filename ~* ^.*?\.txt {
    types        { }
    add_header Content-Type "application/octet-stream; 
    charset=utf-8";
}
##############Content-Disposition 方式###############
# 配置文件为下载模式 
if ($request_filename ~* ^.*?\.(html|doc|zip|docx)$) {
    add_header Content-Disposition attachment;	# 添加响应头,配置文件作为附件下载
    add_header Content-Type application/octet-stream;
}
# 配置文件在线预览模式
if ($request_filename ~* ^.*?\.(md)$) {
	add_header Content-Type "text/plain;charset=utf-8";
}

Content-Disposition 是什么?
在常规的 HTTP 应答中,Content-Disposition 响应头指示回复的内容该以何种形式展示,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。
了解详情可以点击查看

NGINX是如何配置生效的

nginx.conf配置文件中有一段配置

http {
    include       mime.types;
    default_type  application/octet-stream;
    ···
}

application/octet-stream: 大多数浏览器会将其视为二进制文件并下载。default_type 仅适用于未在mime.types文件中定义的文件扩展名

首先nginx会读取 mime.types 中定义好的 数据类型与文件类型关系。然后使用default_typemime.types 中未定义的的都设置为application/octet-stream

参阅

如何让 Google Chrome 显示纯文本 HTTP 响应,而不是将其下载到文件中?
反向 ssl 代理
Content-Disposition

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 11:10:24  更:2022-07-03 11:11:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 12:58:00-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码