如何为 Web 应用程序创建文件服务器


How to create fileserver for a web application

我有两台服务器。

服务器 A:Tomcat+Oracle:它包含 Web 应用程序代码。Web 应用部署在此服务器上。

服务器B:支持PHP + MySQL +大磁盘存储空间。这是在服务器 A 上运行的 Web 应用的文件服务器。

目前所有用户在服务器A上上传文件,服务器A使用FTP连接将其保存在B上。同样,对于下载 A 使用 FTP 从 B 获取文件,然后将文件发送到浏览器。但这会增加服务器 A 的网络开销。

是否有任何安全的方式,只有登录用户才能通过直接访问服务器 B 的某些 URL 来下载他们的文件?

您可以使用短期一次性令牌系统。服务器 A 用于身份验证,服务器 B 用于令牌存储和文件服务器。

客户端在通过身份验证后,从服务器 A 请求文件,然后服务器 A 从服务器 B 请求给定文件名的一次性令牌和 URL。服务器 B 生成令牌和 URL 并返回到服务器 A,服务器 A 又返回到客户端。

客户端现在可以使用给定的 URL 和令牌从服务器 B 请求文件。服务器 B 将检查令牌是否未被使用或过期,以及请求的文件是否与颁发令牌的文件匹配。

是的,当然,首先您需要实现Web服务才能在服务器之间建立连接。

然后一旦用户登录服务器 A 并尝试上传/下载文件,服务器 A 只需向服务器 B 发送令牌密钥(如 cookie)/a 密钥,因此服务器 B 将确保身份验证,最后服务器 A 将用户重定向到服务器 B 进行直接连接,从而减少服务器 A 的负载。

事实上,服务器 A 和 B 应该相互通信记录的用户和可访问性,如果客户端在身份验证之前请求文件怎么办,所以这里的服务器 B 重定向到服务器 A 进行身份验证,然后返回文件启动/关闭。

除了Martyn Roberts的回答之外,我建议使用nginx和ngx_http_secure_download_module来完成这项任务。