使用Nginx对TShock进行TCP/UDP代理

给朋友分享自己的泰拉瑞亚服务,如果总是把服务器的ip暴露出去(如172.xxx.xxx.120:7777),既不优雅,也不安全,如果能用自己的域名就好了

步骤1

创建一个三级域名(如我的:tl.yaowan.icu),将其解析到自己的服务器ip

并在安全组中开启一个向外暴露的端口(如泰拉瑞亚:7777端口)

(简单,不赘述)

步骤2

在服务器安装Nginx

TShock使用TCP协议传输数据,需要使用Nginx的stream模块进行代理传输,而Nginx默认未添加stream模块故需要进行安装

如果使用yum install -y nginx安装的Nginx,可使用yum install nginx-mod-stream直接加装stream模块

安装完后,在nginx.conf添加如下stream流配置:

stream {
    # Terraria game TCP config
    upstream terraria {
        server 127.0.0.1:7778; # 泰拉瑞亚服务器监听的地址和端口
    }

    server {
        listen 7777; # 这是对外部暴露的端口,也是游戏客户端将连接的端口
        proxy_pass terraria;
    }
}

1. 监听游戏运行端口,即TShock其中泰拉瑞亚服务时设置的端口,此处我设置成7778(可自行配置成需要的端口)

2. 对外暴露的端口,即步骤一中开放的那个端口,此处我配置成泰拉瑞亚默认端口7777

这两处端口不能写成一样的了,否则会冲突;

stream块是与http块同一层级的块,勿将stream块写在http块中;

添加完配置后,控制台执行nginx -t命令对添加的配置进行检测,如果返回如下结果,则表示配置没问题

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

执行nginx -s reload命令使Nginx加载修改后的配置

步骤3

运行TShock,并且在设置端口时,设置成Nginx配置中监听的游戏端口(如上述配置中的7778),此时就可以将你的游戏服务器,以<你的域名>:<端口>形式分享出去了

比如我的服务器:

tl.yaowan.icu:7777 密码你猜