肝!用nginx反向代理内网FTP服务器遇到的问题

特别感谢汉尼拔草的文章,在看了之后茅塞顿开。

环境描述

外部服务需要删除数据至服务器C,但是外部服务只能与服务器B连同,而B与C在同一个内网下可以连通。
服务器环境
这个ftp服务是使用filezilla快速搭建的。

操作步骤

之前有用nginx代理过mysql数据库,所以参考的就也尝试用nginx来进行代理。

1、在服务器B上安装nginx,具体略过。
2、在nginx.conf配置文件中配置如下

# ftp代理 
stream{
  upstream ftp{
      hash $remote_addr consistent;
      server ftp的ip:端口;
  }
 
  server {
      listen 39997;  #代理端口
      proxy_connect_timeout 300s;
      proxy_timeout 300s;
      proxy_pass ftp;
 }
 
  upstream batch{
      hash $remote_addr consistent;
      server ftp的ip:监听被动模式的端口1;
  }
  
  server {
      listen 30000;
      proxy_connect_timeout 300s;
      proxy_timeout 300s;
      proxy_pass batch;
 }
 
  upstream batch2{
      hash $remote_addr consistent;
  	  server ftp的ip:监听被动模式的端口2;
  }
  
  server {
      listen 30001;
      proxy_connect_timeout 300s;
      proxy_timeout 300s;
      proxy_pass batch2;
 }
}

其中需要要注意的是要多代理几个监听端口。
3、filezilla的配置
开启被动模式,选择监听传输端口范围;在下面选择"Use the following IP",这里填的服务器B的IP,公网IP
在这里插入图片描述
开启ssl/tls支持,生成新证书
在这里插入图片描述
之后在使用官网测试工具试试连接(https://ftptest.net/),发现还是不可以
在这里插入图片描述
之后我又去查看了有没有什么IP限制,黑名单之类的,防火墙也暂时关闭看看,结果都不行。然后我才想起来我代理的数据端口只有2个,而监听的范围有100个,所以我把监听范围改小之后就可以通过了。
在这里插入图片描述

反思

经过一天一夜的摸索,虽然暂时解决了问题,但是还留下的一下问题没能很好的解决。
现在的监听端口是30000-30001这两个端口,也就是说最多只支持2个服务同时传输数据。为什么不开多一点呢?原因是我在使用nginx代理的时候不能快捷代理多个端口,所以就没有弄,一个一个加太麻烦了。不知道其他码友们有没有知道其他代理的方法,或者nginx代理多个端口的方法?欢迎留言评论哦。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值