Nginx 搭建文件服务器

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 搭建文件服务器)