使用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
密码你猜