美文网首页
Nginx 搭建文件服务器

Nginx 搭建文件服务器

作者: 小道萧兮 | 来源:发表于2021-09-10 16:38 被阅读0次
    Nginx

    Nginx 是一款轻量级的 Web 服务器、反向代理服务器,由于它的内存占用少,启动极快,高并发能力强,在互联网项目中广泛应用。

    一、正向代理与反向代理

    什么是代理?

    代理其实就是一个中介,A 和 B 原本是可以直连的,但由于某种原因无法直连,需要一个中介,这个中介就是代理。

    正向代理

    例如由于防火墙的原因,我们并不能直接访问一些网站,那么我们可以借助工具来实现,这就是一个简单的正向代理的例子。

    正向代理

    反向代理

    反向代理

    当我们在外网访问百度的时候,其实会进行一个转发,代理到内网去,这就是所谓的反向代理,即反向代理“代理”的是服务器端,而且这一个过程对于客户端而言是透明的。

    二、下载 Nginx

    这里以 Mac 电脑为例。

    1、安装 Homebrew

    Homebrew 是什么?

    Homebrew 是 Mac 的包管理器,仅需执行相应的命令,就能下载安装需要的软件包,可以省掉自己去下载、解压、安装等繁琐的步骤。

    方法一:brew 官网安装脚本
    执行命令:

    $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
    

    这时很可能会出现一个问题:要么下载极其龟速,要么直接出现如下提示

    curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
    

    原因是 http://raw.githubusercontent.com 访问不稳定引起的。

    此时需要换一种科学高效的安装方法,即方法二。

    方法二:brew 镜像安装脚本

    /usr/bin/ruby -e "$(curl -fsSL https://cdn.jsdelivr.net/gh/ineo6/homebrew-install/install)"
    

    该脚本用了中科大镜像加速访问,仅修改仓库地址部分,不会产生安全隐患。

    2、安装 Nginx

    使用 Homebrew 安装 Nginx:

    $ brew install nginx
    

    检查nginx是否安装成功,在终端输入:

    $ nginx -v
    nginx version: nginx/1.21.2
    

    3、启动 Nginx

    $ nginx
    

    OK,Nginx 就启动了,

    在浏览器输入 http://localhost:8080/ 就能看到 Nginx 在本机搭建的服务器,默认端口为8080。

    三、配置代理路径

    编辑 Nginx 配置文件

    $ vim /usr/local/etc/nginx/nginx.conf
    

    在配置文件 nginx.conf 中的 http 区域内,可以配置无数个 server ,每一个 server 对应这一个虚拟主机或者域名。

    http {
        ......
        server {
            listen 80                          #监听端口;
            server_name localhost              #地址
            
            location / {                       #访问首页路径
                root /xxx/xxx/index.html       #默认目录
                index index.html index.htm     #默认文件
            }        
            
            error_page  500 504   /50x.html    #当出现以上状态码时从新定义到50x.html
            location = /50x.html {             #当访问50x.html时
                root /xxx/xxx/html             #50x.html 页面所在位置
            }        
        }
        
        server {
            ... ... 
        }
    }
    

    想要搭建文件服务器,首先需要开启文件服务:

    autoindex on;            # 显示目录
    autoindex_exact_size on; # 显示文件大小
    autoindex_localtime on; # 显示文件时间
    

    然后修改其中一个 server 就可以了,最后的 nginx.conf 配置如下:

    http {
        autoindex on;             # 显示目录
        autoindex_exact_size on;  # 显示文件大小
        autoindex_localtime on;   # 显示文件时间
    
        server {
            listen 80                          # 监听端口;
            server_name localhost              # 地址
            charset utf-8;                     # 中文名的文件不乱码. 
            location / {                       # 访问首页路径
                root /xxx/xxx/                 # 根目录
                index index.html index.htm     # 默认文件
            }        
            
            error_page  500 504   /50x.html    # 当出现以上状态码时从新定义到50x.html
            location = /50x.html {             # 当访问50x.html时
                root /xxx/xxx/html             # 50x.html 页面所在位置
            }        
        }
    }
    

    重点是设置 location 中 root 的路径,设置为需要访问的路径,如果路径中无 index 文件,则会打开文件,如下图:

    如果有 index 中设置的文件,则会打开对应的 HTML 页面。

    四、用户登录认证

    现在局域网上所有人都可以通过链接访问刚搭建好的文件服务器了,但实际情况中,只想让授权的用户登录,所以我们再加上登录认证。

    这里使用 htpasswd 工具来生成密码。htpasswd 是 apache 的一个工具,主要用于建立和更新存储用户名、密码的文本文件,用于对 http 用户的认证。

    1、创建认证用户

    $ htpasswd -c /xxx/mypass.db my_username
    

    其中:htpasswd -c 是创建一个加密文件,/xxx/mypass.db 为加密文件生成路径和文件名,my_username 自定义用户名,回车后输入密码,就生成了一个加密文件,默认使用 MD5 加密。

    再添加一个用户:

    $ htpasswd /xxx/mypass.db my_test
    

    注意:一定要去掉 -c 选项,否则会覆盖原文件再创建。

    2、修改 Nginx 配置文件

    生成密码文件后,再修改 Nginx 配置文件的内容,在 server 中加入:

    auth_basic "User Authentication";
    auth_basic_user_file /xxx/mypass.db;

    加入后,配置如下:

    server {
            listen       80;
            server_name  localhost;
    
            auth_basic "User Authentication";  ## 认证弹窗提示语
            auth_basic_user_file /xxx/mypass.db;  ## 密码文件路径
    
            charset utf-8;                          # 中文名的文件不乱码. 
            ......
    }
    

    重新载入 Nginx 配置文件,刷新界面,效果如下:

    输入自定义的用户名和密码即可正常访问。

    Nginx 常用命令

    $ nginx             # 启动 Nginx
    $ nginx -s reload            # 重新载入配置文件
    $ nginx -s reopen            # 重启 Nginx
    $ nginx -s stop              # 停止 Nginx
    

    相关文章

      网友评论

          本文标题:Nginx 搭建文件服务器

          本文链接:https://www.haomeiwen.com/subject/ufmywltx.html