上篇文章写了《快速登录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到新目录时自动显示新目录名》