java - 在 Apache 和游戏服务器之间拆分 https

标签 java apache sockets ssl tcp

我希望在同一 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/

相关文章:

java - 使用 java 套接字向多个客户端传输大文件的最佳方法

java - 如何在 java 中处理 Windows 和 UNIX 上的不同 file.separator

java - 我想在 Android 中解析 Google Map API 以进行反向地理编码

java - 从java中的main方法调用另一个方法

php - 删除我不使用的 PHP 扩展是否有意义?

c# - 使用 IPV6 的 UDP 客户端和服务器

java - 从磁盘读取并并行处理

java - Apache ftp.retrieveFileStream 返回 null

php - 查看为 html 功能

.net - 如何使用 Socket 和 Reactive 扩展(Rx)从连接的客户端套接字获取接收到的消息缓冲区