我有一个本地网络,有一些旧的不安全的服务。我使用nginx反向代理和客户端证书身份验证作为来自Internet的本地网络的安全入口点。直到现在我才使用它来代理HTTP服务器
location / {
proxy_pass http://192.168.123.45:80/;
}
一切正常。
但现在我想提供静态文件,可以通过本地服务器上的FTP访问,我试过简单地说:
location /foo {
proxy_pass ftp://user:[email protected]:5000/;
}
但这不起作用,我找不到任何简单地将HTTP请求代理到FTP请求的东西。
有没有办法做到这一点?
Nginx不支持代理FTP服务器。充其量,您可以代理套接字......这是一个真正的麻烦与常规旧FTP,因为它每次请求文件时在随机端口上打开新连接。
您可以做的是在某个本地路径上为该FTP服务器创建一个FUSE安装,并像正常一样使用Nginx服务该路径。为此,CurlFtpFS是这方面的一个工具。教程:https://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem
(注意:为了安全性和可靠性,强烈建议您尽可能远离FTP。请考虑使用SSH/SFTP。)