【原】Nginx搭建FTP服务器的细节问题

     关于文件服务器很多实现方法,比如采用阿里的分布式文件系统FastDFS,以及自己内部搭建FTP服务器,这里记录一下关于nginx搭建FTP文件系统流程。

  •      ftp服务器搭建的步骤网上也是很多,这里打算详细说明,只是贴一下安装好ftp后如何添加用户名和密码,方便以后参考: 
  1.   yum -y install vsftpd
  2.   useradd ftpuser  (添加用户)
  3.       passwd ftpuser (对ftpuser添加密码,需要重复输入2次,最好是8位密码)

    上面的3个步骤是安装FTP和创建用户和设置密码。

     

  •      默认的yum安装 ftp的路径是在/etc/vsftpd,这时候通过上面创建的 用户从 FTP登陆后,进入 home目录就可以查看到ftpuser文件夹

                              

           上图这里有个小细节就是在Linux中,创建一个文件时,该文件的拥有者都是创建该文件的用户,因为我是创建了一个ftpuser用户,所以这个文件夹所有者是ftpuser。这时候我们想要通过浏览器访问图片的话需要通过 ftp://username:password@ip 这种方式来获取图片,但是这个很不安全,因为把用户名,密码,ip都暴漏出去了, 所以这时候需要一个代理来访问FTP下面的图片,这时候就可以通过nginx的代理机制来实现我们外部对ftp文件的访问,主要配置很简单,就是修改nginx.conf的配置文件,如下图:

  

       上面红色框框是我存放图片的路径,  重启nginx访问图片出现了403(禁止访问),后来排查了ftp的问题、检查nginx的配置,更改文件夹的所有者ftpuser变为root 还是一直403;最后才发现nginx.conf顶部有个user被注释了,后来尝试打开后再次访问,能正常看到图片,所以问题就是这里,默认的是nobody,没有权限组,需要打开注释并赋给有权限的用户

 修改后如下:

  

                 

     

重启nginx再次刷新页面,可以发现图片加载出来了,之前出现的403权限问题也就解决了   


总结

尽管通过这种方式能实现分布式文件存储,但也存在弊端,就是FTP很容易被入侵,而且小型的网站使用FTP作为文件服务器是没问题的,但是项目访问量持续增加的话,必要考虑文件服务器的扩展性与高可用,目前成熟的文件服务器也有很多,例如FastDFS,可以快速的进行线性扩容。

原文地址:https://www.cnblogs.com/zdd-java/p/nginx_ftp.html