![FTP虚拟主机代理](https://linux22.com/image/543190/FTP%E8%99%9A%E6%8B%9F%E4%B8%BB%E6%9C%BA%E4%BB%A3%E7%90%86.png)
我正在设置 OpenVZ 以将我的几个站点彼此分开。我有一个外部 IP 地址,用于为我的站点提供服务。我使用 nginx 将 http 请求代理到每个容器中的 nginx,然后 nginx 将它们代理到 apache 或 fast-cgi 并提供其静态内容。我希望有类似于 FTP 的 nginx 的东西,根据其主机名将请求代理到容器内的相应 FTP 服务器。基于 DNS 主机名的 FTP 协议中是否可以进行虚拟托管?
PS 当然,我可以在全局区域的 FTP 服务器配置中设置与 /vz/private/.... 对应的路径,但这不是一个很优雅的解决方案。共享主机的最佳实践是什么?
答案1
您无法通过站点的域名重定向 FTP 流量,因为 FTP 不通过 HTTP 运行。幸运的是,有 WebDAV - FTP 的替代品,它通过 HTTP 运行。WebDAV 只是一个标准,但许多 Web 服务器都实现了它。例如 Apache 有mod_dav。
看起来使用 Nginx 代理 WebDAV 有点复杂: http://blog.agoragames.com/2009/03/20/webdav-nginx-play-nice/
我做了磅(HTTP 前端)而且很简单。
这是我的 Pound 配置文件的样子。
# WebDAV
ListenHTTP
Address mylab.edu
Port 818
xHTTP 3
Service
HeadRequire "^Host: anotherlab\.edu:818$"
BackEnd
Address openvzhost1
TimeOut 60
Port 818
End
End
Service
HeadRequire "^Host: anotherlab2\.edu:818$"
BackEnd
Address openvzhost1
TimeOut 60
Port 818
End
End
End
不要在头节点上运行 FTP 服务器。这可能不太安全。
最佳做法是不要在 OpenVZ 头节点上运行任何服务。