基于Nginx的游戏服务器远程部署方案

发布于 2023-06-08  577 次阅读


最近研究天堂二的服务端,发现本机架设的环境有些问题,而我的服务器却能够完美运行服务端。这种时候,最大的障碍反而变成了客户端IP的修改。可是我找了半天,死活找不到对应于我这个客户端的服务器IP修改工具(其实准确来说,是一个解密工具,因为客户端里的配置文件是加密的)。

在这种情况下,我想到了一种方法,在不修改客户端里“127.0.0.1”服务器IP的情况下完成了局域网架设。

这里需要用到的软件是nginx,作为一个轻量级web服务器程序,nginx最常见的用法是转发七层的web服务。从1.9.0之后的版本,nginx加入stream模块,支持四层协议TCP的转发,1.9.3之后支持UDP的转发。这就可以让我们转发服务端指定的端口。

这里假设服务器的IP是192.168.31.174,咱首先在服务端里设置好开放端口对应的网络接口(例如把登录服务器的IP由127.0.0.1改为192.168.31.174等)再确定好通信的端口(这里假设为2174和3580)。

咱接着在客户端所在的计算机上安装了nginx,修改nginx.conf,在event区块和http区块内加入一个stream区块,写入下面的端口转发配置:


stream {
    server {
        listen 2174;
        proxy_pass 192.168.31.174:2174;
    }
    server {
        listen 3580;
        proxy_pass 192.168.31.174:3580;
    }
} 

先启动服务器上的服务端,再启动客户计算机上的nginx,最后启动客户端,游戏正常。原理其实很简单,就是当客户端以为服务端地址是127.0.0.1时,它会主动向127.0.0.1发起通信,而nginx则接下了这个包并且把它转发给了真正的服务器(192.168.31.174),这就在无法修改客户端地址的情况下实现了远端架设。

后面有机会咱会测试更多的游戏,包括服务端有IP锁的游戏(比如《黑金》),实现在完全不修改服务端和客户端的任意IP的条件下的远端架设。这就需要在服务器上也安装上nginx了。具体情况,只能先进行试验,才能得到结果。

另外,咱还在寻找Android系统上好用的nginx,这样就可以解决手游app修改IP的痛点了。希望可以找到。

最后更新于 2023-06-08