您的位置:首页 > 运维架构 > Nginx

nginx+vsftpd下载上传服务部署

2019-08-04 17:52 1296 查看

上篇文章写了《快速登录vsftpd的expect脚本》
https://blog.51cto.com/amunlinux/2426471

本篇讲一下nginx 作为下载服务器,vsftpd作为上传服务器的结合。

yum -y install nginx vsftpd

Nginx 配置文件
几乎都是修改默认的配置

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /etc/nginx/nginx.pid;
include /usr/share/nginx/modules/*.conf;
events {
use epoll;
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 60;
types_hash_max_size 2048;
charset utf-8;
server_tokens off;
server_names_hash_bucket_size 128;
client_header_buffer_size 4;
client_header_timeout 60;
client_body_timeout 60;
large_client_header_buffers 16 512k;
client_max_body_size 5g;
gzip on;
gzip_min_length 1024;
gzip_buffers 16 32k;
gzip_proxied any;
gzip_types text/plain application/x-javascript text/css application/xml text/javascript;
limit_conn_zone $binary_remote_addr zone=one:1024m;
#共使用2048M的内存来对于IP传输开销
include /etc/nginx/mime.types;
default_type application/octet-stream;

server {
listen       54xxx;
server_name  47.97.xx.xx;
location / {
root    /etc/nginx/html/download;
if ($request_filename ~* ^.*?\.(sh||shell|py|perl|pl|go|mp3|mp4|jpg|jpeg|bmp|gif|dmg|tar|xls|rpm|pxt|doc|pdf|rar|gz|zip|docx|exe|xlsx|ppt|pptx)$){
#配置if实现下载而不是直接在浏览器打开
add_header Content-Disposition: 'attachment';
}
autoindex on;          #开启索引功能
autoindex_exact_size off;  #关闭计算文件确切大小(单位bytes),只显示大概大小(单位kb、mb、gb)
autoindex_localtime on;    #显示本机时间而非 GMT 时间
sendfile on;
tcp_nopush on;
expires 1h;
#allow   192.168.4.0/24;   #允许4段的所有地址访问
#allow   192.168.5.0/24;   #允许5段的所有地址访问
#deny    all;              #禁止全部
}

error_page 404 /404.html;
location = /404.html{
root html;
}
error_page 500 501 502 503 504 505 /50x.html;
location = /50x.html{
root html;
}
}

}

这里的根位置是:/etc/nginx/html/download, 将和vsftpd 的的local_root是一致的,这样才能保证这边上传,那边就有了

vsftpd:

[root@canal ~]# cat /etc/vsftpd/vsftpd.conf|grep -v '^#'
anonymous_enable=NO
listen_port=54657
pasv_enable=YES
pasv_min_port=0
pasv_max_port=0
pasv_promiscuous=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
local_root=/etc/nginx/html/download
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

过滤后也就是这几行

创建vsftpd的用户
useradd -s /sbin/nologin -d /home/ftpuser ftpuser
passwd ftpuser
密码自定义,但是你要记得住,一会登陆还要用呢

chown -R ftpuser:ftpuser /etc/nginx/html/download
必须要改,不然你ftp客户端是会报错的。我已经踩完坑。。。
/etc/vsftpd/vsftpd start

访问测试:

第一层目录

点击就可以下载

测试FileZilla 上传,看看nginx 这边显示不。

测试下载

这个实验就是这么回事。
不安客户端也可以下载了,具体的简易程度自行参考吧
用处大不,但是有用。

下一篇文件关于《history 的优化和cd到新目录时自动显示新目录名》

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: