ubuntu 在生产服务器上部署和运行时,节点js无法将文件上载到FTP

vu8f3i0k  于 2023-02-03  发布在  其他
关注(0)|答案(2)|浏览(140)

我在basic-ftp上使用Node JS(12.13.0)和NPM(6.13.19),一切正常,当我从本地主机在开发机器上运行代码时,我可以将文件上传到远程FTP(如果没有SSL,我的远程FTP不允许这样做)。
生产服务器托管在Digital Ocean(Ubuntu 18.04.3)上我尝试禁用防火墙,因为我认为这可能是问题的原因。我使用sudo ufw disable,为了确保它被禁用,我使用sudo ufw status检查当前状态,返回Status: inactive
这是我的密码

async function uploadImageToFtp(fileName, path) {
    const client = new ftp.Client()
    client.ftp.verbose = true
    try {
        await client.access({
            host: process.env.FTP_HOST,
            user: process.env.FTP_USER,
            password: process.env.FTP_PASSWORD,
            secure: false
        })
        await client.uploadFrom(path, "images/bd/" + fileName)
    } catch (err) {
        console.log(err)
    }
    client.close()
}

生产回复

Connected to EXTERNAL_IP_ADDRESS < 220 server ready - login please Login
security: No encryption
> USER username < 331 password required
> PASS ###

在localhost上,一切正常,我们完成了这一步,并开始将文件上载到相同的服务器和凭据。
在此之后,我从来没有得到任何响应,除了超时与坏网关502从我的请求。

hlswsv35

hlswsv351#

我不知道这个库,但问题听起来像FTP会话是在主动模式下运行的。这通常是一个问题,所以如果它是在主动模式下,我建议尝试设置您的客户端要求被动模式。

oug3syen

oug3syen2#

AWS动态路由有问题。您的示例在vpc下,nat无法将地址从ftp服务器解析回您的示例。
您可以尝试在ip表中添加路由条目。Check here
这告诉nat解析特定的ftp到特定的地址。我希望这会有帮助。

相关问题