5

2 つの Minecraft サーバーにアクセスしやすくする作業を行っています。いくつかの解決策を試みましたが、これまでのところ効果的に機能したものはありません。

mysite.com:25560 でリッスンしている通常のバニラ Minecraft サーバーと、mysite.com:25570 でリッスンしている Tekkit Minecraft サーバーがあります。つまり、両方の Minecraft サーバーが同じマシンで実行されています。ユーザーが指定されたポートを使用してサーバーに直接接続すると、これらは正しく機能します。

バニラ サーバーは当初、標準の Minecraft ポートである mysite.com:25565 をリッスンしていました。変更して、Apache が mysite.com:25565 をリッスンし、トラフィックを適切にリダイレクトできるようにしましたが、今のところ機能していません。

私ができるようにしたいのは、mine.mysite.com に送信されたすべてのリクエストを mysite.com:25560 にリダイレクトし、tekkit.mysite.com に送信されたすべてのリクエストを mysite.com:25570 にリダイレクトすることです。DNS はドメイン名と IP アドレスのみを処理するため、DNS 自体はこの再ルーティングを管理できないことを理解しています。

友人の提案を受けて、私の最近の試みは、前に述べたように、ポート 25565 でリッスンし、トラフィックを正しいポートにプロキシするように Apache を再構成することでした。これは私の apache2.conf のセクションです:

Listen 25565

NameVirtualHost *:25565

<VirtualHost *:25565>
    ServerName tekkit.mysite.com
    ServerAlias www.mysite.com
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
    ProxyPreservehost On
#   ProxyPass / www.mysite.com:25570/
    ProxyPassReverse / mysite.com:25570/
</VirtualHost>

<VirtualHost *:25565>
    ServerName mine.mysite.com
    ServerAlias www.mysite.com
    ProxyPreserveHost On
    <Proxy *>
        Order allow,deny
        Allow from all
    </Proxy>
#   ProxyPass / mysite.com:25560/
    ProxyPassReverse / mysite.com:25560/
</VirtualHost>

ProxyPass のコメントアウトされた行により、Apache がエラー ProxyPass URL must be absolute! で開始されます。

正しく動作するかどうかを確認するために、それぞれの場所でhttp://www.mysite.com:25560/60を置き換えてみました。Apache はエラーなしで起動しますが、ユーザーはサーバーに接続できません。 . これは、Minecraft サーバーが HTTP リクエストをサーバー接続にリダイレクトしないためだと思います。

これにより、HTTP 以外のリクエストの処理に Apache は役に立たないだろうと確信するようになりました。私が間違っている場合、Apache がサブドメインのトラフィックをポートに正しくリダイレ​​クトするようにするにはどうすればよいですか? そうでなければ、誰かApacheなしでこれを行う方法を提案できますか? すべての標準 Linux/Ubuntu ユーティリティにアクセスできます。私は進歩なしでかなり長い間探してきました。

ありがとう!

4

2 に答える 2

3

解決策1:

エラーが発生するだけなので、これはApacheでは機能しないと思います。インターネットでしばらく検索したところ、https ://github.com/SirCmpwn/MCVHostが見つかりました。それが機能するかどうかはわかりませんが、機能する場合は、あなたのニーズに完全に合っていると思います。

Linuxを使用している場合は、JavaまたはPythonに相当するものが見つからないため、Monoで実行できます。

編集:私はそれをテストしましたが、プロトコルが変更されたため、1.4.6では動作しません

解決策2(そしておそらく最良):

Minecraftが1.3以降に認識しているSRVレコードを使用します。マニュアルは、Multiplayによってhttp://wiki.multiplay.co.uk/Minecraft/Hostnamesで公開されています。

于 2013-01-03T14:54:11.963 に答える
0

Linuxを使用していると仮定すると、iptablesがこれを行うと思います。

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 25565 -j REDIRECT --to-port 25560

このコマンドを実行するには root である必要があり、永続的ではありません。サーバーが再起動するたびにこれを実行する必要があります。

于 2012-08-29T17:17:32.087 に答える