我希望在同一 IP 地址的端口 443 上同时访问 Apache 和游戏服务器。
游戏服务器连接是一个普通的 TCP 连接,在客户端登录时建立并保持打开状态,直到客户端注销,可能是几小时后。
起初我想在反向模式下使用 mod_proxy 并让客户端通过对特定 URL 的请求开始通信,但我想这不会让我在客户端和游戏服务器之间进行长时间的双向通信。
另一个想法是在转发模式下使用 mod_proxy_connect(当然有严格的访问规则)并让客户端发送 CONNECT 请求。从理论上讲,这应该可行。
然而,上述两种尝试都有一个大问题:游戏服务器不再看到客户端的 IP 地址。不幸的是,这是一个硬性要求。
颠倒顺序有同样的问题:如果我让游戏服务器监听端口 443 并将 Web 请求转发到 Apache,.php 程序和 access.log 将不再看到真实的 ip 地址。而且我有点担心这种做法会对游戏性能产生负面影响。 (尤其是在包含大量不可缓存图片的页面上)
操作系统:Linux (Debian) 网络服务器:Apache 2 游戏服务器和客户端都是用Java编写的
提前感谢您的任何想法。
最佳答案
您可以让 Apache 创建一个 session ID 并将其存储到数据库中,然后使用 mod_proxy_connect。当游戏服务器接受来自本地 Apache 的请求时,它应该从 header 中获取 session ID,并从数据库中读取客户端的 ip 地址。
关于java - 在 Apache 和游戏服务器之间拆分 https,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1693350/