使用NGINX从FTP服务器服务静态文件

mwngjboj  于 2023-06-21  发布在  Nginx
关注(0)|答案(2)|浏览(199)

我有一个本地网络,其中有一些旧的不安全的服务。我使用nginx反向代理和客户端证书身份验证作为从互联网到这个本地网络的安全入口点。到目前为止,我只使用它来代理HTTP服务器使用

location / {
        proxy_pass http://192.168.123.45:80/;
    }

一切正常
但现在我想为静态文件,可通过FTP访问本地服务器上,我试着简单:

location /foo {
        proxy_pass ftp://user:password@192.168.100.200:5000/;
    }

但是这不起作用,我找不到任何简单的代理HTTP请求到FTP请求的东西。
有什么办法可以做到这一点吗?

zc0qhyus

zc0qhyus1#

Nginx不支持代理FTP服务器。最好的情况是,您可以代理套接字。。这是一个真实的的麻烦与常规的旧FTP,由于它打开新的连接随机端口上的每次文件被请求。
你可以做的是在某个本地路径上创建一个FUSE挂载到该FTP服务器,然后像往常一样用Nginx服务该路径。为此,CurlFtpFS是一个工具。教程:https://linuxconfig.org/mount-remote-ftp-directory-host-locally-into-linux-filesystem
(Note:为了安全性和可靠性,强烈建议您尽可能从FTP迁移。请考虑SSH/SFTP。)

bwntbbo3

bwntbbo32#

你可以先使用nfs mount,你需要在ftp服务器上安装:Debian 11的例子

sudo apt-get install nfs-kernel-server

在/etc/exports上,您可以设置允许共享您的目录到ip服务器

/home/sharedir ip.ip.ip.ip(rw,sync,no_subtree_check,all_squash,anonuid=0,anongid=0)

Nginx服务器安装

sudo apt-get install nfs-common

并从第一个服务器挂载目录

mount /mnt/myremotesharedir ip.ip.ip.ip:/home/sharedir

现在你可以在nginx中使用/home/sharedir的路径作为root或alias

location /foo {
    root /home/sharedir/foo;
}

相关问题