bash
sudo apt update && sudo apt upgrade -y # Ubuntu/Debian
# 或
sudo yum update -y # CentOS/RHEL
sudo apt install vsftpd -y # Ubuntu/Debian
# 或
sudo yum install vsftpd -y # CentOS/RHEL
编辑配置文件 /etc/vsftpd.conf
:
sudo nano /etc/vsftpd.conf
修改或添加以下配置:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES
allow_writeable_chroot=YES
listen=YES
listen_ipv6=NO
pasv_enable=YES
pasv_min_port=40000
pasv_max_port=50000
user_sub_token=$USER
local_root=/var/www/images/$USER
userlist_enable=YES
userlist_file=/etc/vsftpd.userlist
userlist_deny=NO
# 创建系统用户(例如imguser)
sudo useradd -m -d /var/www/images/imguser -s /bin/bash imguser
sudo passwd imguser
# 创建用户目录
sudo mkdir -p /var/www/images/imguser
sudo chown imguser:imguser /var/www/images/imguser
sudo chmod 755 /var/www/images/imguser
# 将用户添加到允许列表
echo "imguser" | sudo tee -a /etc/vsftpd.userlist
sudo systemctl enable vsftpd
sudo systemctl restart vsftpd
sudo apt install nginx -y # Ubuntu/Debian
# 或
sudo yum install nginx -y # CentOS/RHEL
创建Nginx配置文件 /etc/nginx/conf.d/images.conf
:
sudo nano /etc/nginx/conf.d/images.conf
添加以下内容:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或IP
location /images/ {
alias /var/www/images/;
autoindex on;
# 图片缓存设置
expires 30d;
add_header Cache-Control "public";
# 允许跨域访问(可选)
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
# 图片处理模块(可选)
image_filter resize 800 600;
image_filter_jpeg_quality 85;
image_filter_buffer 10M;
}
# 防止目录遍历
location ~ /\. {
deny all;
}
}
sudo nginx -t
sudo systemctl reload nginx
# 允许HTTP和FTP端口
sudo ufw allow 80/tcp
sudo ufw allow 21/tcp
sudo ufw allow 40000:50000/tcp # FTP被动模式端口范围
sudo ufw enable
sudo setsebool -P httpd_enable_homedirs on
sudo chcon -R -t httpd_sys_content_t /var/www/images/
在vsftpd配置中添加:
deny_file={*.exe,*.sh,*.php,*.js}
http://your-server-ip/images/imguser/your-image.jpg
使用Let's Encrypt获取SSL证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your-domain.com
安装ImageMagick:
sudo apt install imagemagick -y
创建缩略图脚本:
#!/bin/bash
for img in /var/www/images/*/*.{jpg,jpeg,png,gif}; do
if [ ! -f "${img%.*}_thumb.${img##*.}" ]; then
convert "$img" -resize 200x200 "${img%.*}_thumb.${img##*.}"
fi
done
设置日志轮转:
sudo nano /etc/logrotate.d/nginx_images
添加:
/var/log/nginx/images.access.log {
daily
missingok
rotate 14
compress
delaycompress
notifempty
create 0640 www-data adm
sharedscripts
postrotate
/usr/sbin/nginx -s reload
endscript
}
通过以上步骤,您已经成功在Linux平台上使用Nginx和vsftpd构建了一个功能完善的图片服务器。