我有两台服务器。
服务器A:Tomcat + Oracle:它包含Web应用程序代码。 Webapp部署在此服务器上。
服务器B:支持PHP + MySQL +大磁盘存储空间。这是在服务器A上运行的Web应用程序的文件服务器。
目前所有用户都在服务器A上传文件,服务器A使用FTP连接将其保存在B上。 类似地,对于下载使用FTP从B获取文件然后将文件发送到浏览器。但这会增加服务器A的网络开销。
是否有任何安全的方式,只有登录的用户才能通过直接访问服务器B的某个URL来下载文件?
答案 0 :(得分:2)
您可以使用短期一次性令牌系统。服务器A用于身份验证,服务器B用于令牌存储和文件服务器。
客户端一旦通过身份验证,就会从服务器A请求文件。然后,服务器A会从服务器B请求给定文件名的一次性令牌和URL。服务器B生成令牌和URL并返回到服务器A,服务器A又返回给客户端。
客户端现在可以使用给定的URL和令牌从服务器B请求文件。服务器B将检查令牌是否未被使用或过期,并且请求的文件与发出令牌的文件匹配。< / p>
答案 1 :(得分:1)
是的,首先,您需要实施Web服务才能在服务器之间建立连接。
然后,一旦用户登录服务器A并尝试上传/下载文件,服务器A只是向服务器B发送令牌密钥(如cookie)/密钥,因此服务器B将确保身份验证,最后,服务器A将用户重定向到服务器B以进行直接连接,从而导致服务器A中的负载减少。
实际上服务器A和B应该相互通信关于记录的用户和可访问性,以及如果客户端在进行身份验证之前请求文件,那么服务器B重定向到服务器A进行身份验证,然后返回文件上/下。
答案 2 :(得分:0)
除了Martyn Roberts的回答,我建议使用nginx和ngx_http_secure_download_module来完成这项任务。