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

使用 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 这个目录。

# 创建目录 (如果不存在) 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
启动并测试
-
检查配置文件语法:
sudo nginx -t
如果显示
syntax is ok和test is successful,则配置正确。 -
重启 Nginx 服务:
sudo systemctl restart nginx
-
访问:
- 在浏览器中输入
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:允许跟随符号链接。
启用模块和认证(可选)
-
启用目录列表模块:
sudo a2enmod auth_basic authn_core authz_user
-
创建认证用户和密码文件:
# 安装工具 sudo apt install apache2-utils # 创建密码文件 sudo htpasswd -c /etc/apache2/.htpasswd your_username
-
在配置中添加认证: 在
<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>
启动并测试
- 重启 Apache:
sudo systemctl restart apache2
- 访问:与 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
启动并测试
-
重启 vsftpd:
sudo systemctl restart vsftpd sudo systemctl enable vsftpd
-
测试: 使用 FTP 客户端(如 FileZilla)连接:
- 主机:你的服务器 IP
- 用户名:
ftpuser - 密码:你设置的密码
- 端口:21 (默认)
总结与安全建议
- 日常分享/小型团队:推荐使用 Nginx 或 Apache,它们功能强大且安全可控。
- 临时/内部测试:可以使用 Python 的简单服务器,用完即止。
- 专业文件传输:如果需要稳定、可控的上传下载,vsftpd 是更好的选择。
安全建议:
-
防火墙:只开放必要的端口(如 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
-
用户认证:务必为文件服务器设置强密码的用户认证。
-
HTTPS:如果服务器在公网,强烈建议配置 Let's Encrypt 免费证书,将 HTTP 升级到 HTTPS,防止数据被窃听。
-
最小权限原则:只给文件共享目录授予必要的读/写/执行权限,不要使用
777。
