开发者社区> 技术小胖子> 正文

FTP+Nginx图片服务器

简介:
+关注继续查看

1、安装vsftpd组件

安装完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。
[root@bogon ~]# yum -y install vsftpd

2、创建虚拟用户登录

2.1 创建文本格式的用户名、密码列表

首先需要建立一个文本格式的用户名/密码列表文件,奇数行为用户名,偶数行为上一行中用户名所对应的密码。
例如:添加两个用户jene、john,密码分别为abc123、abc456执行以下的操作:

[root@ling ~]# vi /etc/vsftpd/juser.txt
jene
abc123
john
abc456

2.2 生成数据库:

db_load:安装 db4,db4-devel,db4-utils

# cd //etc/vsftpd   //切换到/etc/vsftpd的目录下
# yum -y install db4*
# db_load -T -t hash -f juser.txt juser.db  //将刚创建的juser.list列表转换为juser.list.db

file juser.db   //查看转换后的文件类型

2.3 修改数据文件访问权限:

chmod 600 /etc/vsftpd/juser.db

2.4 修改pam配置:

vi /etc/pam.d/juser.pam //为虚拟用户创建PAM认证文件,文件名为juser.pam(见名之义)
auth    required        pam_userdb.so   db=/etc/vsftpd/juser
account required        pam_userdb.so   db=/etc/vsftpd/juser
注意:db=/etc/vsftpd/vsftpd_login 后面的.db必须去掉

2.5 创建虚拟账号对应的系统用户:

# useradd -d /home/ftpuser -s /sbin/nologin ftpuser      //添加用户ftpuser,指定到新建的家目录,将虚拟用户对应到这个系统账号上,这个账号无需设置密码及登录Shell
# chmod 755 /home/ftpuser/        //调整权限以允许浏览目录

2.6 修改vsftpd配置文件

vsftpd端口是1335,访问目录为/opt/upload(即为图片路径),被动模式

vi /etc/vsftpd/vsftpd.conf
anonymous_enable=no
local_enable=YES
write_enable=YES
local_umask=022
connect_from_port_20=YES
#ftp_data_port=1334
chroot_local_user=YES
listen=YES
listen_port=1335
#pam_service_name=vsftpd
pam_service_name=juser.pam
tcp_wrappers=YES

local_root=/opt/upload
pasv_enable=yes
pasv_min_port=31000
pasv_max_port=31999
guest_enable=YES
guest_username=ftpuser
user_config_dir=/opt/ftpuser_dir
userlist_enable=YES

2.7 定义jene虚拟用户配置文件,允许jene用户可以上传

#vi /opt/ftpuser_dir/jene 
anon_upload_enable=YES
anon_other_write_enable=YES
anon_umask=062   (权限062是创建目录为715,文件为604)

2.8 定义john虚拟用户配置文件,允许john用户可以上传及创建目录

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
anon_umask=062

# service vsftpd restart

3、配置nginx.conf,使其成为图片服务器

# vi /opt/nginx/conf/nginx.conf

user  nginx nginx;
worker_processes  1;

pid        /opt/nginx/run/nginx/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"'
                       '$upstream_addr $upstream_response_time $request_time ';
    log_format log404 '$status [$time_local] $remote_addr $host$request_uri $sent_http_location';

    access_log  logs/nginx/access.log main;
    access_log  logs/nginx/host.access.404.log  log404;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       8010;
        server_name  localhost;
        large_client_header_buffers 4 128k;
        client_max_body_size 300m;
        client_body_buffer_size 128k;
        proxy_connect_timeout 600;
        proxy_read_timeout 600;
        proxy_send_timeout 600;
        proxy_buffer_size 64k;
        proxy_buffers   4 32k;
        proxy_busy_buffers_size 64k;
        proxy_temp_file_write_size 64k;

        location /nginxstatus{
                stub_status on;
                access_log on;
                auth_basic "nginxstatus";
                auth_basic_user_file htpasswd;
        }

        location ~ .*\.(gif|jpg|jpeg|png)$ {
            expires 24h;
            root /opt/upload;
            access_log /opt/nginx/logs/images.log;
            proxy_store on;
            proxy_store_access user:rw group:rw all:rw;
            proxy_temp_path         /opt/upload;
            proxy_redirect          off;
            proxy_set_header        Host 192.168.8.15;
            client_max_body_size    10m;
            client_body_buffer_size 1280k;
            proxy_connect_timeout   900;
            proxy_send_timeout      900;
            proxy_read_timeout      900;
            proxy_buffer_size       40k;
            proxy_buffers           40 320k;
            proxy_busy_buffers_size 640k;
            proxy_temp_file_write_size 640k;
       }

        location / {
            root   html;
            index  index.html index.htm;
        }

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

    }

5、图片路径权限

# ll /opt/# chmod nginx /opt/upload# ll /opt/#chmod -R ftpuser.ftpuser /opt/upload/pthoimanges# ll /opt/upload/,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
纯CSS3实现GIF图片动画效果
在线演示 本地下载
902 0
asp.net 自定义服务器控件权威资料
最近公司安排做一个自定义的可重用的控件 ,一直搞c/s 的,突然让我搞 b/s 还真有点不习惯,搁置了2年的web思想早已经陈旧了,要恶补一下了。asp.net 服务器控件最权威的资料 MSDN: 演练:开发和使用自定义服务器控件http://msdn.
564 0
大型网站如何实现图片服务器分离 提高网站性能
大家可以关注一下当前所有的大型网站,他们的图片URL一般都会用其他二级域名,其服务器也是独立的服务器。现在很多的网站上都会用到大量的图片,而图片是网页传输中占主要的数据量,也是影响网站性能的主要因素。
4690 0
今日推荐:10款在 Web 开发中很有用的占位图片服务
  设计网站时,将要使用的图像在一开始通常还不存在,这个时候布局是最重要的。然而,图像的尺寸通常是预先设置,实用一些占位图像可以帮助我们更好地预览和分析布局。   如今,有免费的占位图片自动生成工具可以使用,而不是手动创建这些占位符图像,可以节省我们的时间。
959 0
Giphy – 分享一个很棒的 GIF 动画图片搜索引擎
  GIF 动画图片是一种非常有趣的图片格式,比静态图片更能够表达出含义,如果能制作得有创意,那就非常的有趣。今天向大家推荐一个很棒的 GIF 动画图片搜索引擎——Giphy。 您可能感兴趣的相关文章 轻松一刻:那些让我们惊叹不已的唯美GIF动态图片 OverAPI.
758 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
19871 0
asp.net 获取服务器相关信息
 #region 返回操作系统信息 .net版本 数据库大小  程序大小等方法        ///         /// 获取服务器系统信息        ///         public string GetOSVersion()        {            OperatingSystem os = Environment.
643 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
18125 0
云服务器 ECS弹性变配能力总览
云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,充分的助您降低 IT 成本,提升运维效率,使您更专注于自己核心业务创新。它的一个重要优势就是弹性计算,可以在数分钟内创建数千台的云服务器来应对您的业务压力,方便您根据自己的业务的需求从水平和垂直两个维度进行管理。
6369 0
21117
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载