【原】Nginx搭建FTP服务器的细节问题
关于文件服务器很多实现方法,比如采用阿里的分布式文件系统FastDFS,以及自己内部搭建FTP服务器,这里记录一下关于nginx搭建FTP文件系统流程。
ftp服务器搭建的步骤网上也是很多,这里贴一下具体流程,方便以后参考:
- yum -y install vsftpd
- useradd ftpuser (添加用户)
- 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,可以快速的进行线性扩容。
【原】Nginx搭建FTP服务器的细节问题的更多相关文章
- Nginx与ftp服务器
使用Nginx搭建ftp服务器
- CentOS 下搭建FTP服务器
vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名 ...
- Nginx 搭建图片服务器
Nginx 搭建图片服务器 本章内容通过Nginx 和 FTP 搭建图片服务器.在学习本章内容前,请确保您的Linux 系统已经安装了Nginx和Vsftpd. Nginx 安装:http://www ...
- linux系统搭建ftp服务器及创建用户使用
linux 系统下搭建ftp服务器 ftp是什么 FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序. ...
- Nginx,Nginx 搭建图片服务器
Nginx Nginx 概述 反向代理 工作流程 优点 1:保护了真实的web服务器,保证了web服务器的资源安全 2:节约了有限的IP地址资源 3:减少WEB服务器压力,提高响应速度 4:其他优点 ...
- 在Ubuntu Server 14.04中搭建FTP服务器(VMWare)
自己搭建ftp服务器,方便主机与虚拟机中的Ubuntu传输文件. 选用的ftp软件为vsftpd. 1.命令行: sudo apt-get install vsftpd 2.安装完配置: vsftpd ...
- 超简单——自己搭建ftp服务器
自己搭建ftp服务器 之所以没选择serv-u,一是因为收费,虽说网上有破解版,但是使用过程中发现破解版很不稳定,经常异常死掉,随后改选用免费的filezilla. 1软件获取 从百度搜索 FileZ ...
- Linux 搭建FTP服务器
介绍 本章主要介绍在Linux中搭建FTP服务器的过程,需要掌握的要点是配置文件的合理配置. 知识点 在linux中使用的FTP是vsftp FTP可以有三种登入方式分别是: 匿名登录方式:不需要用户 ...
- RedHat6.2搭建FTP服务器
我的环境: A:Red Hat Enterprise 6.2 IP:192.168.16.12 此机作测试端 B:Red Hat Enterprise 6.2 IP:192.168.16.13 此机做 ...
随机推荐
- SqlAlchemy操作(三)
1.基于SQLALCHEMY建表 from sqlalchemy.ext.declarative import declarative_base from sqlalchemy import Colu ...
- day 23 面向对象的命名空间与组合
创建一个类就会创建一个类的名称空间,用来存储类中定义的所有名字,这些名字称为类的属性 而类有两种属性:静态属性和动态属性 1. 静态属性就是直接在类中定义的变量 2.动态属性就是定义在类中的方法. 其 ...
- Webstorm 的 Tab 键怎样调整缩进值? 调节成缩进成2个空格或者4个空格
原文:https://blog.csdn.net/niexia_/article/details/78280569 需求:因为用了eslint,对代码格式很严格.统一用空格.而用tab方式会省事很多. ...
- (3)Oracle基础--表
· 认识表 Oracle中的表都是存储在表空间中,具有以下特点: <1> 数据的基本存储单元 <2> 二维结构 行:又称为‘记录’ 列:又称为‘字段或域’ <3&g ...
- tomcat apr Dockfile
基于 centos7.4 jdk1.7 RUN yum makecache && yum --nogpgcheck -y groupinstall 'Development Tools ...
- 关于省,市,区联动 java 实现方式
关于省,市,区的三级联动后台的实现有两种方式: 1:分三次请求各自取出 省 市 区 的数据: 2:一次请求获得所有的数据,并且组装成相依的数据结构到前端: 其中第一种方式: 会导致数据的延迟加载,出现 ...
- maven项目报错--Cannot change version of project facet Dynamic Web Module to 3.0 Error in Eclipse
错误原因: 使用ecplise构建的maven骨架默认支持的是web2.3的版本,当使用这个创建3.0版本的web项目时则会报这样的错误: Cannot change version of proje ...
- 【wireshark】总体结构
1. 总体结构 wireshark的总体结构如下图所示. 2. 功能模块 模块名 功能 源码子目录 GTK/Qt 处理所有的用户输入/输出(所有的窗口,对话框等等) /ui GTK: /ui/gtk ...
- 【bzoj3684】 大朋友和多叉树 生成函数+多项式快速幂+拉格朗日反演
这题一看就觉得是生成函数的题... 我们不妨去推下此题的生成函数,设生成函数为$F(x)$,则$[x^s]F(x)$即为答案. 根据题意,我们得到 $F(x)=x+\sum_{i∈D} F^i(x)$ ...
- 适配 iOS 11 & iPhone X 大全
1.升级iOS11后造成的变化 1. 1升级后,发现某个拥有tableView的界面错乱,组间距和contentInset错乱,因为iOS11中UIViewController的automatical ...