qinchen_1988 2022-03-18 14:57 采纳率: 0%
浏览 175

Nginx 转发FTP请求

我使用主机A的IIS创建了一个FTP服务,然后在主机B启动了一个Nginx服务,然后使用C主机通过B转发请求访问到A的FTP。
FTP服务器限制了数据端口的区间。
nginx.conf增加了全区间端口的监听。
结果:
21命令端口转发成功,FTPClient可以链接成功,并且成功创建文件夹。
但是数据端口转发失败,listFiles()获取不到文件,retrieveFile,storeFile都失败

nginx.conf:
stream {
upstream ftp { 
        hash $remote_addr consistent; 
        server 172.20.10.2:21 ; 
    } 
    server { 
        listen 8080; 
        proxy_connect_timeout 300s; 
        proxy_timeout 300s; 
        proxy_pass ftp; 
    } 
upstream ftp1 { 
        hash $remote_addr consistent; 
        server 172.20.10.2:50000 ; 
    } 
    server { 
        listen 50000; 
        proxy_connect_timeout 300s; 
        proxy_timeout 300s; 
        proxy_pass ftp1; 
    } 
 upstream ftp2 { 
        hash $remote_addr consistent; 
        server 172.20.10.2:50001 ; 
    } 
    server { 
        listen 50001; 
        proxy_connect_timeout 300s; 
        proxy_timeout 300s; 
        proxy_pass ftp2; 
    } 

 upstream ftp1000 { 
        hash $remote_addr consistent; 
        server 172.20.10.2:50999 ; 
    } 
    server { 
        listen 50999 ; 
        proxy_connect_timeout 300s; 
        proxy_timeout 300s; 
        proxy_pass ftp2; 
    } 
}

  • 写回答

1条回答 默认 最新

  • xyjincan 2022-03-22 10:51
    关注

    应该你还需要再加一个端口

    默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息。

    但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关,如果采用主动模式,那么数据传输端口就是20;如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定。

    评论

报告相同问题?

问题事件

  • 修改了问题 3月18日
  • 创建了问题 3月18日

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题