优化 Ubuntu 上的 FTP 服务器(常见为 vsftpd 或 ProFTPD)可以从 性能、安全、并发、磁盘IO、网络 等多个维度入手。下面以 vsftpd(最常用) 为主,兼顾通用优化建议。
sudo apt update && sudo apt upgrade vsftpd
/etc/vsftpd.conf)pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
记得在防火墙放行:
ufw allow 30000:31000/tcp
max_clients=200
max_per_ip=5
# 关闭 DNS 反向解析(加快连接)
reverse_lookup_enable=NO
# 允许异步 IO
async_abor_enable=YES
# 禁止上传文件延迟
write_enable=YES
# 不允许匿名
anonymous_enable=NO
# 不需要 ls -R
ls_recurse_enable=NO
idle_session_timeout=300
data_connection_timeout=120
connect_timeout=60
FTP 高并发时会用到大量 fd。
ulimit -n
如小于 65535,修改:
sudo vim /etc/security/limits.conf
* soft nofile 65535
* hard nofile 65535
sudo vim /etc/sysctl.conf
添加或修改:
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.core.rmem_max = 33554432
net.core.wmem_max = 33554432
生效:
sudo sysctl -p
iostat -x 1
如发现 IO 高:
ssl_enable=YES
rsa_cert_file=/etc/ssl/certs/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.key
sudo useradd -m ftpuser
sudo passwd ftpuser
chroot_local_user=YES
allow_writeable_chroot=YES
xferlog_enable=YES
log_ftp_protocol=NO
netstat -an | grep :21 | wc -l
❌ 开启匿名上传
❌ 不使用 chroot
❌ 被动端口范围过大或无限制
❌ 使用 FTP 明文传输(生产环境)
如果 FTP 压力非常大,可考虑:
| 场景 | 建议 |
|---|---|
| 高并发 | SFTP(OpenSSH) |
| 云端 | 对象存储 + CDN |
| 内网 | NFS / SMB |
| 高安全 | SFTP + chroot |
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
max_clients=200
max_per_ip=5
reverse_lookup_enable=NO
如果你愿意,可以告诉我: