@TOC
前言
问题环境:
使用filezilla搭建ftp服务,IP:192.168.10.1:21
使用nginx反向代理,IP:192.168.10.11
遇到227 Entering Passive Mode(xxx,xxx,xxx,xxx,xxx,xxx,xxx)错误,或425 Can't open data connection for transfer of "/"错误。
主要方式是通过filezilla server Interface对被动模式PASV进行配置来解决。
ftp的主动模式及被动模式的理论自行百度吧~
一、filezilla server 部署ftp(略)
最近更新有中文版,服务端一路确定即可。
二、配置Nginx
编辑nginx主目录/conf/nginx.conf文件
stream {
upstream ftp{
hash $remote_addr consistent;
# server 192.168.10.1:21;(此处为ftp服务ip端口)
server 192.168.10.1:21;
}
server {
# listen 21;(监听端口,除已用端口的任意端口)
listen 21;
proxy_connect_timeout 10s;
proxy_timeout 10s;
proxy_pass ftp;
}
}
nginx代理配置完毕,使用客户端登录会报227错误。
三、配置ftp服务端被动模式PASV
Windows
找到配置页面
在这里插入图片描述
在这里插入图片描述
-
第一步,将数据端口范围调整至固定较小的几个,例如:3000-3001(看自己,闲的不行可以多搞一些,目前不清楚有什么用 =-=!)
在这里插入图片描述 -
第二步,将公网IP设置为Nginx服务IP
在这里插入图片描述 -
第三步,取消勾选不使用公网IP
在这里插入图片描述 第四步,点击OK
第五步,在Nginx配置文件stream层加入新的端口
stream {
upstream ftp{
hash $remote_addr consistent;
# server 192.168.10.1:21;(此处为ftp服务ip端口)
server 192.168.10.1:21;
}
server {
# listen 21;(监听端口,除已用端口的任意端口)
listen 21;
proxy_connect_timeout 10s;
proxy_timeout 10s;
proxy_pass ftp;
}
# 以下为新增数据端口
upstream ftp3000{
hash $remote_addr consistent;
server 192.168.10.1:21;
}
server {
listen 3000;
proxy_connect_timeout 10s;
proxy_timeout 10s;
proxy_pass ftp3000;
}
upstream ftp3001{
hash $remote_addr consistent;
server 192.168.10.1:21;
}
server {
listen 3001;
proxy_connect_timeout 10s;
proxy_timeout 10s;
proxy_pass ftp3001;
}
}
到此应该没有问题了
linux
步骤差不多,不同的是找到filezillasever的配置文件:FileZilla Server.xml,找到如下片段进行修改。
<Item name="Custom PASV IP type" type="numeric">1</Item>
<Item name="Custom PASV IP" type="string">192.168.10.11</Item>
<Item name="Custom PASV min port" type="numeric">3000</Item>
<Item name="Custom PASV max port" type="numeric">3001</Item>
<Item name="Use custom PASV ports" type="numeric">1</Item>
原创,转载请表明出处。