用http 的形式访问ftp服务器上的图片文件
1. 工具
nginx 1.18.0和 ftpServe
安装使用配置指路:https://www.cnblogs.com/YangMian/p/14913562.html
2. 图片上传到ftp成功后,在浏览器输入ftp://127.0.0.1 没有任何反应,反而弹出什么打开2345加速浏览器。
原本想着这问题时捆绑软件的问题,但是当我配置 ftp://127.0.0.1/文件路径 或者 ftp://userName:password@127.0.0.1/文件路径 时 到html或者jsp的超链接中时发现,浏览器提示源文件提示被阻止!!!
但是在我的电脑里或者cmd里都能正常访问。突然发现源项目配置的访问路径不是ftp开头的,而是http开头的url
3. 解决方案
浏览器不能解析ftp,用http协议能访问到吗???
查找方案中发现,nginx代理可以解决这个问题,历经两天终于解决(下面是nginx.conf的相关两个配置,都用到了nginx代理)
#这里是我自己配置ftp下载服务
server {
listen 8818;
server_name resouce;
root D:\ftp\ftpLibrary; #访问文件根目录
autoindex on; #是否浏览文件下的列表
location / { #是否允许跨域
add_header Access-Control-Allow-Origin *;
}
add_header Cache-Control "no-cache,must-revalidate";# 是否缓存
}
#代理ftp访问图片配置服务
server {
listen 8819;
server_name localhost;
location ~ \.(gif|jpg|jpeg|png|bmq|swf)$ {
root D:/ftp/ftpLibrary/;
}
}
root 是定位ftp文件根路径,项目url后再跟具体的路径
再次启动,发现图片出来了,url也显示是http连接(为什么能用http 来访问ftp上的图片:因为nginx代理是配置了location 那一句,当url以gif、jpg等结尾时,port满足8819 ip满足localhost(或者127.0.0.1)时就会流转到ftp文件的根目录)
4. 注意事项
ftp服务器配置两个用户,一个匿名用户(因为代理时怎么加上用户名和密码是个问题,权限配置时设置只读)和一个插入用户(常规的配置,权限勾选满)