![Apache 与 glassfish 之间的通信](https://linux22.com/image/655723/Apache%20%E4%B8%8E%20glassfish%20%E4%B9%8B%E9%97%B4%E7%9A%84%E9%80%9A%E4%BF%A1.png)
我们目前使用 HTTPD 服务器 (apache) 来处理客户端请求。请求进一步代理到提供内容的应用服务器 (glassfish)。内容是静态文件(软件映像)。以下是使用的 ProxyPass 指令。
ProxyPass /access/sw http://localhost:8080/access/sw
我们希望 Apache 能够处理静态内容,因为这样可以释放 glassfish 来执行其他任务。唯一的问题是,请求仍然需要定向到 glassfish 以检查业务逻辑。运行业务逻辑后,glassfish 服务器应向 Apache 发送响应,确认允许客户端下载软件映像。它还可以向 Apache 发送否定响应以拒绝客户端请求。
如何实现? 有没有 Apache 模块可以处理这个问题? 重申一下,下面的内容可以实现吗?
Request from client -> Apache -> Glassfish (runs the business logic) -> responds back to Apache if client should be allowed to download -> Apache serves the static file depending on glassfish response
PS - 客户端无法处理重定向请求。客户端发送单个 GET
答案1
只是大声思考。我能想到 2 种情况。
第一个是您可以在 apache 上使用 PHP(或 python、ruby……)。
只需让用户在下载文件时请求 PHP 脚本,那么您的 php 将向 glassfish 发出请求,询问(该用户是否可以下载此软件?)如果可以,则从 PHP 提供您的请求,否则响应 403(禁止)。
第二个将执行与上面相同的操作,但是以 apache 模块的形式。