您当前的位置:首页 > 电脑百科 > 站长技术 > 服务器

配置 Nginx 的目录浏览功能

时间:2020-10-23 10:34:03  来源:  作者:

有时候我们需要将服务器上的某些目录共享出来,让其他人可以直接通过浏览器去访问、浏览或者下载这些目录里的一些文件。

最近我就正好需要将一些静态的 html 页面部署到服务器上,让自己的多台设备能随时随地进行查看。

经过搜索之后找到了两个方法:一是使用 Node 的 http-server ,二是使用 Nginx 自带的 ngx_http_autoindex_module 模块。由于我自己的博客就是使用 Nginx 部署的,所以我就选择了第二种方法。

本篇文章介绍如何打开 Nginx 的目录浏览功能,配置简单的密码保护,并对索引页面进行美化。

配置目录浏览

要开启 Nginx 的目录浏览功能很简单,只需要打开 nginx.conf 或者对应的虚拟主机配置文件,在 server 或 location 段里面中上 autoindex on; 就可以了。

除了 autoindex 外,该模块还有两个可用的字段:

autoindex_exact_size on;
# 默认为 on,以 bytes 为单位显示文件大小;
# 切换为 off 后,以可读的方式显示文件大小,单位为 KB、MB 或者 GB。

autoindex_localtime on;
# 默认为 off,以 GMT 时间作为显示的文件时间;
# 切换为 on 后,以服务器的文件时间作为显示的文件时间。

除此之外,如果二级目录使用的是虚拟目录,则需要使用 alias 字段进行配置。

下面是一个完整的配置文件:

location /download {
    alias /home/user/static_files/;

    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
}

中文乱码问题

如果开启了 Nginx 的目录浏览功能后发现中文目录名或者文件名显示为乱码,则要加上 charset 字段:

location /download {
    # ... 其它同上
    charset utf-8,gbk; # 两个字符集间不要加空格
}

添加目录密码保护

如果该目录是隐私目录,就需要为其增加密码保护。方法如下:

location /download {
    # ... 其它同上

    auth_basic "Enter your name and password";
    auth_basic_user_file /var/www/html/.htpasswd;
}

其中, auth_basic 字段是用户名、密码弹框上显示的文字(貌似在 Chrome 和 Safari 上面都没有用到),而 auth_basic_user_file 指定了记录登录用户名与密码的文件 .htpasswd ,这个文件需要使用 htpasswd 命令或者 在线工具 来生成。

htpasswd 命令是 macOS 系统自带的命令,如果是 windows 系统,建议直接使用在线生成工具比较方便。

# 创建一个全新的文件,会清除文件里的全部用户
$ htpasswd -c /var/www/html/.htpasswd user1  
# 添加一个用户,如果用户已存在,则修改密码
$ htpasswd -b /var/www/html/.htpasswd user2 password
# 删除一个用户
$ htpasswd -D /var/www/html/.htpasswd user2

到目前为止,我们已经完成了对 Nginx 目录浏览的全部配置。但是,默认的页面样式有点难看,我们要对其进行一些美化(装扮QQ空间即视感)。

如果对页面样式没有要求,下面的部分就不需要阅读了。

使用 FancyIndex 进行美化

安装 FancyIndex

网上的 FancyIndex 安装教程大多数是在编译 nginx 时,添加这个插件。但是,由于我的服务器是 ubuntu 系统,安装时图方便直接使用了 apt-get install nginx 安装了 nginx。如果说现在为了安装一个 FancyIndex 要重新进行一次 nginx 的编译和配置,我想我也没那个折腾的心情。

幸好 ubuntu 最好的地方就在于它的仓库源很多。在 ubuntu 系统上,我们可以通过安装 nginx-extras 来安装 FancyIndex 插件。

$ sudo apt-get install nginx-extras

安装完成之后,就要对页面进行美化了。

由于我不是前端,要真让我自己手写来对页面进行调整,那估计就不是美化,而是对页面的摧毁了。幸好,对于美化的东西,网上正常都能找到主题或者模板,FancyIndex 也不例外。 这里 就有一个简洁大方的主题可以直接拿来使用。

配置 FancyIndex

首先,将 这个主题 克隆下来。

网站根目录(如 /var/www/html )下新建一个 fancyindex 目录,然后将下面的文件复制到该目录中:

  • header.html
  • footer.html
  • css/fancyindex.css
  • fonts/*
  • images/breadcrumb.png

最后修改 nginx 配置文件,下面是完整的配置文件:

location /download {
    alias /home/user/static_files/;
    charset utf-8,gbk;

    auth_basic "Enter your name and password";
    auth_basic_user_file /var/www/html/.htpasswd;

    fancyindex on;
    fancyindex_exact_size off;
    fancyindex_localtime on;
    fancyindex_header "/fancyindex/header.html";
    fancyindex_footer "/fancyindex/footer.html";
    fancyindex_ignore "fancyindex";
}

注意,使用 fancyindex 之后需要将 autoindex 相关的字段去掉,否则可能会造成冲突。

文档 上面说明了有两个字段 fancyindex_default_sort 和 fancyindex_name_length 可以分别用来指定文件排序和文件名的最大长度,但是我试过之后都不起作用,可能是由于 nginx-extras 里面的 FancyIndex 版本比较低的缘故。

下图是配置完后的最终效果:

配置 Nginx 的目录浏览功能

 

 



Tags:Nginx 目录浏览   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
有时候我们需要将服务器上的某些目录共享出来,让其他人可以直接通过浏览器去访问、浏览或者下载这些目录里的一些文件。最近我就正好需要将一些静态的 HTML 页面部署到服务器...【详细内容】
2020-10-23  Tags: Nginx 目录浏览  点击:(129)  评论:(0)  加入收藏
▌简易百科推荐
阿里云镜像源地址及安装网站地址https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b111kK44P更新源之前把之前的国外的镜像先备份一下 切换到yumcd...【详细内容】
2021-12-27  干程序那些事    Tags:CentOS7镜像   点击:(1)  评论:(0)  加入收藏
前言在实现TCP长连接功能中,客户端断线重连是一个很常见的问题,当我们使用netty实现断线重连时,是否考虑过如下几个问题: 如何监听到客户端和服务端连接断开 ? 如何实现断线后重...【详细内容】
2021-12-24  程序猿阿嘴  CSDN  Tags:Netty   点击:(12)  评论:(0)  加入收藏
一. 配置yum源在目录 /etc/yum.repos.d/ 下新建文件 google-chrome.repovim /etc/yum.repos.d/google-chrome.repo按i进入编辑模式写入如下内容:[google-chrome]name=googl...【详细内容】
2021-12-23  有云转晴    Tags:chrome   点击:(7)  评论:(0)  加入收藏
一. HTTP gzip压缩,概述 request header中声明Accept-Encoding : gzip,告知服务器客户端接受gzip的数据 response body,同时加入以下header:Content-Encoding: gzip:表明bo...【详细内容】
2021-12-22  java乐园    Tags:gzip压缩   点击:(8)  评论:(0)  加入收藏
yum -y install gcc automake autoconf libtool makeadduser testpasswd testmkdir /tmp/exploitln -s /usr/bin/ping /tmp/exploit/targetexec 3< /tmp/exploit/targetls -...【详细内容】
2021-12-22  SofM    Tags:Centos7   点击:(7)  评论:(0)  加入收藏
Windows操作系统和Linux操作系统有何区别?Windows操作系统:需支付版权费用,(华为云已购买正版版权,在华为云购买云服务器的用户安装系统时无需额外付费),界面化的操作系统对用户使...【详细内容】
2021-12-21  卷毛琴姨    Tags:云服务器   点击:(6)  评论:(0)  加入收藏
参考资料:Hive3.1.2安装指南_厦大数据库实验室博客Hive学习(一) 安装 环境:CentOS 7 + Hadoop3.2 + Hive3.1 - 一个人、一座城 - 博客园1.安装hive1.1下载地址hive镜像路径 ht...【详细内容】
2021-12-20  zebra-08    Tags:Hive   点击:(9)  评论:(0)  加入收藏
以下是服务器安全加固的步骤,本文以腾讯云的CentOS7.7版本为例来介绍,如果你使用的是秘钥登录服务器1-5步骤可以跳过。1、设置复杂密码服务器设置大写、小写、特殊字符、数字...【详细内容】
2021-12-20  网安人    Tags:服务器   点击:(7)  评论:(0)  加入收藏
项目中,遇到了一个问题,就是PDF等文档不能够在线预览,预览时会报错。错误描述浏览器的console中,显示如下错误:nginx代理服务报Mixed Content: The page at ******** was loaded...【详细内容】
2021-12-17  mdong    Tags:Nginx   点击:(7)  评论:(0)  加入收藏
转自: https://kermsite.com/p/wt-ssh/由于格式问题,部分链接、表格可能会失效,若失效请访问原文密码登录 以及 通过密钥实现免密码登录Dec 15, 2021阅读时长: 6 分钟简介Windo...【详细内容】
2021-12-17  LaLiLi    Tags:SSH连接   点击:(16)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条