我是否可以将子域配置为指向我服务器上的特定端口

时间:2011-10-29 23:36:46

标签: dns port portforwarding

我有一台旧计算机,我将其转换为一个Minecraft服务器。我有2个同时运行的Minecraft服务器,一个在25565端口(默认),另一个在端口25566上。

我买了域some.com并将其指向我的服务器。现在,在游戏中你输入something.com进入第一台服务器和something.com:25566进入另一台服务器。

有没有办法将one.something.com设置为指向第一台服务器而将two.something.com设置为指向第二台服务器?我拥有(centos)服务器,具有root访问权限,以及其他所有内容。域名由no-ip控制,如果这有所不同。我知道DNS与端口号没有关系,但是如果有一个程序我可以安装以使其工作吗?

谢谢:)

7 个答案:

答案 0 :(得分:69)

如果您有权访问SRV记录,则可以使用它们获得所需内容:)

E.G

A记录

Name: mc1.domain.com
Value: <yourIP>

Name: mc2.domain.com
Value: <yourIP>

SRV记录

Name: _minecraft._tcp.mc1.domain.com
Priority: 5
Weight: 5
Port: 25565
Value: mc1.domain.com

Name: _minecraft._tcp.mc2.domain.com
Priority: 5
Weight: 5
Port: 25566
Value: mc2.domain.com

然后在我的世界中你可以使用

  

mc1.domain.com,它将使用端口登录服务器1   25565

  

mc2.domain.com,它将使用端口登录服务器2   25566

然后在您的路由器上,您可以将它指向机器上的25565和25566,同时启用两个服务器和Voilà!

来源:这适用于我在同一台机器上运行2台Minecraft服务器,端口为50500和50501

答案 1 :(得分:9)

如果您在服务器上只有一个IP,则没有机会这样做。 DNS是数字(IP)解析器的简单名称。如果服务器上有两个IP,则可以将每个子域指向每个IP地址,并在每个IP的默认端口上运行两个服务器。
one.example.com - &gt; 127.0.0.1(服务器:127.0.0.1:25565)
two.example.com - &gt; 127.0.0.2(服务器:127.0.0.2:25565)

答案 2 :(得分:2)

我...不这么认为。您可以将子域重定向(例如blah.something.com)以指向something.com:25566,但我认为您实际上不能将子域设置为位于不同的端口上。我可能是错的,但使用简单的.htaccess或其他东西检查%{HTTP_HOST}并根据子域重定向可能会更容易。

答案 3 :(得分:1)

如果要在单个服务器中的不同端口上托管多个网站,那么MRVDOG提到的方法将不起作用。因为浏览器无法解析SRV记录,并且始终会命中:80端口。 例如,如果您的要求是:

site1.domain.com maps to domain.com:8080
site2.domain.com maps to domain.com:8081

因为经常要充分利用已购买的服务器空间。 然后,您可以尝试以下操作:

步骤1: 安装代理服务器。我将在此处使用 Nginx

apt-get install nginx

步骤2: 编辑/etc/nginx/nginx.conf文件以添加端口映射。为此,请添加以下行:

server {
    listen 80;
    server_name site1.domain.com;

    location / {
        proxy_pass http://localhost:8080;
    }   
}

server {
    listen 80;
    server_name site2.domain.com;

    location / {
        proxy_pass http://localhost:8081;
    }   
}

这很神奇。因此,该文件最终将如下所示:

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
    worker_connections 768;
    # multi_accept on;
}

http {

    ##
    # Basic Settings
    ##

    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types;
    default_type application/octet-stream;

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on;

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##
server {
    listen 80;
    server_name site1.domain.com;

    location / {
        proxy_pass http://localhost:8080;
    }   
}

server {
    listen 80;
    server_name site2.domain.com;

    location / {
        proxy_pass http://localhost:8081;
    }   
}

    include /etc/nginx/conf.d/*.conf;
    include /etc/nginx/sites-enabled/*;
}


#mail {
#   # See sample authentication script at:
#   # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
# 
#   # auth_http localhost/auth.php;
#   # pop3_capabilities "TOP" "USER";
#   # imap_capabilities "IMAP4rev1" "UIDPLUS";
# 
#   server {
#       listen     localhost:110;
#       protocol   pop3;
#       proxy      on;
#   }
# 
#   server {
#       listen     localhost:143;
#       protocol   imap;
#       proxy      on;
#   }
#}

第3步: 启动nginx:

/etc/init.d/nginx start

无论何时对配置进行任何更改,都需要重新启动nginx:

/etc/init.d/nginx restart

最后: 不要忘记在DNS配置中添加 A记录。所有子域都应指向域。像这样: enter image description here

输入静态IP而不是111.11.111.111

更多详细信息:

答案 4 :(得分:0)

如果注册商提供网址重定向记录,您可以将sub.domain.tld重定向到domain.tld:subport。这可能不会在Minecraft中产生预期的结果,但它适用于浏览器。

e.g。我分别在10000和20000上运行Webmin和Usermin,并使用webmin.domain.tldusermin.domain.tld重定向到正确的端口,以便用户不必记住它们。

答案 5 :(得分:0)

只有1个IP,您可以忘记DNS,但可以使用MineProxy,因为客户端的握手数据包包含随后连接到的主机,并且MineProxy会准备好该主机并将连接代理到已注册的服务器那个主机

答案 6 :(得分:0)

如果你想使用 2 个子域到其他端口,你可以使用 Minecraft 的代理服务器(即 BungeeCord、Waterfall、Travertine...),并在 config.yml 服务器中将子域绑定到指定。 为此,您必须在 BungeeCord 的配置中设置您的服务器:

servers:
  pvp:
    motd: 'A Minecraft Server PVP'
    address: localhost:25566
    restricted: false
  skyblock:
    motd: 'A Minecraft Server SkyBlock'
    address: localhost:25567
    restricted: false

记住!端口必须不同于默认的 Minecraft 端口(即 25565),因为我们将使用这个端口作为我们的代理。 sub1.domain.com 和 sub2.domain.com 我们必须绑定到您拥有这些服务器的服务器。现在,我们必须在您的 Bungee 服务器中绑定子域:

listeners:
    forced_hosts:
      sub1.domain.com: pvp
      sub2.domain.com: skyblock
      domain.com: pvp // You can bind other domains to same servers.

记得把force_default_server改成true,把host改成0.0.0.0:25565 带有一些服务器的 BungeeCord 的 config.yml 示例:https://pastebin.com/tA9ktZ6f 现在您可以在 sub1.domain.com 上连接到您的 pvp 服务器并在 sub2.domain.com 上连接到 skyblock。别担心,BungeeCord 只需 0.5GB 的 RAM 即可供 500 个玩家使用。

相关问题