在之前的教程里,我介绍了Nginx Proxy Manager如何用域名代替ip连接Minecratf服务器,乍一看这俩和没什么关系,但实际上确实没什么关系😜

但是,今天的教程是为之前的域名连接服务器做补充的,还记得我之前说”如果端口不是25565,等我后面出教程“吗?没错,就是这里

先说一下我们的目标:在端口不是25565的情况下仍然只用域名不接端口连接

接着是了解搭建原因

  1. 为什么不直接用Nginx Proxy Manager反代呢?

    因为Nginx Proxy Manager只能提供http/https的反代,多用于网站方面,而Minecraft服务器是TCP协议,不支持http或https,搭建后可能无法使用,哪怕可以使用,也可能会增加延迟

  2. Nginx Proxy Manager和Nginx的区别?

    这俩差不多是一个东西,只是Nginx Proxy Manager不支持TCP等,而Nginx支持

教程开始

首先安装Nginx,安装了Nginx Proxy Manager不代表安装了Nginx

Ubuntu

curl https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
echo "deb https://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
sudo apt update
sudo apt install nginx

检测是否带stream模块

nginx -V 2>&1 | grep -- '--with-stream'

Debian

sudo apt remove nginx nginx-common nginx-core -y
curl https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
echo "deb http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
echo "deb-src http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee -a /etc/apt/sources.list.d/nginx.list
sudo apt update
sudo apt install nginx

检测,确认带有--with-stream

nginx -V | grep stream

CentOS(我没有CentOS服务器,自测)

sudo yum remove nginx
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://nginx.org/packages/centos/nginx.repo
sudo yum install nginx

同样检测

nginx -V 2>&1 | grep -- '--with-stream'

配置

Nginx主配置在/etc/nginx/nginx.conf,在http{}块外新增stream{}块,例如:

还是以12345端口为例

stream {
    server {
        listen 25565;                      # 监听本机25565端口,原因在下面
        proxy_pass ip:12345;     # 转发到Minecraft服务器
        proxy_timeout 300s;
        proxy_connect_timeout 10s;
    }
}

测试配置

nginx -t

无错误后重启Nginx:

systemctl reload nginx

记得开放服务器端口

一个错误(我tm搞了好久)

bind() to 0.0.0.0:80 failed (98: Address already in use)

这是由于80端口被占用,无法启动,是因为之前搭建的Nginx Proxy Manager的问题,占用了80、443和81端口,如果还用就改端口,不用就停止

sudo lsof -i :80
sudo systemctl stop 服务名
sudo systemctl start nginx

关于为什么还是监听25565端口

之前提到过,Minecraft服务器默认是连接25565端口,这个是无法改变的,所以必须监听25565端口,否则域名后面还是要接端口

所以,与其搞这个,倒不如就用25565端口,反正监听也要用的,服务器端口是什么都不重要了,也是直接连域名,不输端口

现在还没有又不用25565端口又不用单独加端口的方法,就像网站一样,直接输域名都是连接80或443,用其它端口都是要单独加的

所以,如果你是为了服务器安全改的端口,那我觉得这篇教程对你来说没有用处,和没改端口一样,为了安全,需要用其它方法,还是等我后面更新,实在肝不动了~qwq