凌峰创科服务平台

Linux文件服务器如何用HTTP服务配置?

方案概览

方案 软件名称 优点 缺点 适用场景
方案一 Nginx 高性能、占用资源少、配置灵活、反向代理 配置比简单方案稍复杂 需要高性能、高并发,或同时提供网站服务
方案二 Apache (httpd) 功能强大、模块丰富、配置成熟、支持用户认证 相对 Nginx 更消耗资源 需要复杂的功能模块,如用户认证、URL重写
方案三 Python (SimpleHTTPServer) 无需安装、一行命令启动、适合临时或快速测试 功能极其简单,性能差,不安全 临时分享文件,快速搭建测试环境
方案四 vsftpd (FTP) 专注文件传输,断点续传 需要专门的 FTP 客户端 需要更可靠、更可控的文件上传下载,而不是网页浏览

重要提示: 如果你的文件服务器暴露在公网上,强烈建议使用 Nginx 或 Apache,并配置好用户认证、防火墙和 HTTPS,以确保安全,不要轻易将 Python 的简单服务器暴露在公网。

Linux文件服务器如何用HTTP服务配置?-图1
(图片来源网络,侵删)

使用 Nginx (推荐)

Nginx 是一个现代、高性能的 Web 服务器和反向代理,用它来提供文件服务非常高效。

安装 Nginx

在基于 Debian/Ubuntu 的系统上:

sudo apt update
sudo apt install nginx

在基于 CentOS/RHEL 的系统上:

sudo yum install epel-release  # 如果需要
sudo yum install nginx

创建文件共享目录

假设我们想分享 /home/user/share 这个目录。

Linux文件服务器如何用HTTP服务配置?-图2
(图片来源网络,侵删)
# 创建目录 (如果不存在)
sudo mkdir -p /home/user/share
# 给 Nginx 进程用户 (通常是 www-data 或 nginx) 添加读权限
# 对于 Debian/Ubuntu
sudo chown -R www-data:www-data /home/user/share
# 对于 CentOS/RHEL
sudo chown -R nginx:nginx /home/user/share
# 给其他用户添加读和执行权限 (进入目录)
sudo chmod -R 755 /home/user/share

配置 Nginx

创建一个新的配置文件:

sudo nano /etc/nginx/conf.d/share.conf

粘贴进去,并根据你的实际情况修改:

server {
    # 监听 80 端口
    listen 80;
    # 监听服务器的私有 IP,方便局域网访问
    # server_name 192.168.1.100; 
    # 访问根路径 / 时,指向你的共享目录
    root /home/user/share;
    # 在目录中列出文件
    autoindex on;
    # 显示文件大小,并格式化 (如 1.2K, 3.4M)
    autoindex_exact_size off;
    # 显示文件的时间格式
    autoindex_localtime on;
    # 可选:添加 basic-auth 用户认证
    # auth_basic "Restricted Content";
    # auth_basic_user_file /etc/nginx/.htpasswd;
    # 创建密码文件命令: sudo htpasswd -c /etc/nginx/.htpasswd your_username
}

创建认证用户(可选)

如果你需要用户认证,请执行以下步骤:

# 安装 apache2-utils 工具来创建密码
sudo apt install apache2-utils
# 创建密码文件,首次使用 -c 参数会创建新文件
# 提示你输入两次密码
sudo htpasswd -c /etc/nginx/.htpasswd your_username
# 如果之后要添加更多用户,不要再用 -c
# sudo htpasswd /etc/nginx/.htpasswd another_username

启动并测试

  1. 检查配置文件语法

    sudo nginx -t

    如果显示 syntax is oktest is successful,则配置正确。

  2. 重启 Nginx 服务

    sudo systemctl restart nginx
  3. 访问

    • 在浏览器中输入 http://<你的服务器IP地址>http://<你的服务器域名>
    • 如果设置了用户认证,浏览器会弹出登录窗口,输入你创建的用户名和密码即可。

使用 Apache (httpd)

Apache 是老牌的 Web 服务器,功能非常全面。

安装 Apache

# Debian/Ubuntu
sudo apt install apache2
# CentOS/RHEL
sudo yum install httpd

创建文件共享目录

与 Nginx 步骤相同。

sudo mkdir -p /home/user/share
# Apache 的默认运行用户是 www-data (Debian) 或 apache (CentOS)
sudo chown -R www-data:www-data /home/user/share # Debian
# sudo chown -R apache:apache /home/user/share # CentOS
sudo chmod -R 755 /home/user/share

配置 Apache

启用目录列表功能,编辑默认的站点配置文件:

sudo nano /etc/apache2/sites-available/000-default.conf

找到 DocumentRoot /var/www/html 这一行,将其修改为你的共享目录:

DocumentRoot /home/user/share

确保以下配置块存在并启用(如果不存在,请添加):

<Directory /home/user/share>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
  • Indexes:允许在目录中生成文件列表。
  • FollowSymLinks:允许跟随符号链接。

启用模块和认证(可选)

  1. 启用目录列表模块

    sudo a2enmod auth_basic authn_core authz_user
  2. 创建认证用户和密码文件

    # 安装工具
    sudo apt install apache2-utils
    # 创建密码文件
    sudo htpasswd -c /etc/apache2/.htpasswd your_username
  3. 在配置中添加认证: 在 <Directory> 块中添加以下内容:

    <Directory /home/user/share>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
        # 认证部分
        AuthType Basic
        AuthName "Restricted Content"
        AuthUserFile /etc/apache2/.htpasswd
        Require valid-user
    </Directory>

启动并测试

  1. 重启 Apache
    sudo systemctl restart apache2
  2. 访问:与 Nginx 相同,在浏览器中输入服务器 IP 地址。

使用 Python (SimpleHTTPServer)

这适合快速临时分享,不适合生产环境。

进入要分享的目录

cd /path/to/your/share/folder

启动服务器

  • 对于 Python 2:
    python -m SimpleHTTPServer 8000
  • 对于 Python 3:
    python3 -m http.server 8000

访问

在浏览器中输入 http://<你的服务器IP地址>:8000 即可看到文件列表。

注意:这个服务器没有认证,没有安全措施,且性能低下,绝对不要在公网上使用。


使用 vsftpd (FTP 服务器)

如果你需要的不是通过网页浏览,而是通过 FTP 客户端(如 FileZilla)进行上传下载,vsftpd 是一个绝佳选择。

安装 vsftpd

sudo apt install vsftpd

配置 vsftpd

编辑配置文件:

sudo nano /etc/vsftpd.conf

修改或确保以下配置项:

# 允许本地用户登录
anonymous_enable=NO
local_enable=YES
# 允许写操作(上传、创建目录等)
write_enable=YES
# 启用本地用户上传文件的 chroot 环境,防止他们访问其他目录
chroot_local_user=YES
# 允许对被 chroot 的目录有写权限
allow_writeable_chroot=YES
# 指定用户只能访问自己的家目录
# 如果你希望所有用户访问同一个共享目录,这一行需要注释掉,并手动配置用户家目录
# 或者,创建一个专门的 ftp 用户并设置其家目录为共享文件夹

创建 FTP 用户并设置密码

假设我们创建一个名为 ftpuser 的用户,并将其家目录设为共享文件夹 /home/user/share

# 创建用户并设置家目录和 shell
sudo useradd -d /home/user/share -s /sbin/nologin ftpuser
# 设置密码
sudo passwd ftpuser

启动并测试

  1. 重启 vsftpd

    sudo systemctl restart vsftpd
    sudo systemctl enable vsftpd
  2. 测试: 使用 FTP 客户端(如 FileZilla)连接:

    • 主机:你的服务器 IP
    • 用户名:ftpuser
    • 密码:你设置的密码
    • 端口:21 (默认)

总结与安全建议

  • 日常分享/小型团队:推荐使用 NginxApache,它们功能强大且安全可控。
  • 临时/内部测试:可以使用 Python 的简单服务器,用完即止。
  • 专业文件传输:如果需要稳定、可控的上传下载,vsftpd 是更好的选择。

安全建议

  1. 防火墙:只开放必要的端口(如 80, 443, 21)。

    # UFW (Debian/Ubuntu)
    sudo ufw allow 80/tcp
    sudo ufw allow 443/tcp # 如果配置了 HTTPS
    sudo ufw enable
    # firewalld (CentOS/RHEL)
    sudo firewall-cmd --permanent --add-service=http
    sudo firewall-cmd --permanent --add-service=https
    sudo firewall-cmd --reload
  2. 用户认证:务必为文件服务器设置强密码的用户认证。

  3. HTTPS:如果服务器在公网,强烈建议配置 Let's Encrypt 免费证书,将 HTTP 升级到 HTTPS,防止数据被窃听。

  4. 最小权限原则:只给文件共享目录授予必要的读/写/执行权限,不要使用 777

分享:
扫描分享到社交APP
上一篇
下一篇