使用 IP 表在路由器后面进行端口转发?

使用 IP 表在路由器后面进行端口转发?

是否可以使用 IP 表在路由器后面进行端口转发?

我的设置是这样的:我有一个 Raspberry Pi 在端口 80 上运行一个小网站,还有一台更强大的计算机在端口 25565 上运行 Minecraft 服务器。我已经设置路由器来接受每个端口的请求并将它们转发到正确的位置,但我还有一个 Minecraft“网站”(带有地图等)在 Minecraft 服务器上运行,也在端口 80 上。我还有 myurl.com。

我的问题是:使用 IP 表,我可以将 mc.myurl.com:80 转发到 Minecraft 服务器网站,而 myurl.com:80 继续转到 Raspberry Pi 吗?我该如何设置?

如果我从方程式中删除 Raspberry Pi 会怎么样? mc.myurl.com 是否转发至同一服务器上的 :81? (我必须在路由器上打开:81吗?)

答案1

您正在寻找的是反向代理。阿帕奇可以玩这个角色但我建议你更好地使用nginx哪个更轻。

您将端口重定向80到 Raspberry Pi 并设置 Nginx 来代理请求,mc.myurl.com如下所示:

server {
  listen 80;
  server_name mc.myurl.com;

  location / {
    proxy_pass  http://my.mine.craft;
  }
}

参见 Nginx 的文档更多细节。

答案2

您可以使用Apache2的反向代理模块。这会将 mc 服务器主机名的传入请求重定向到位于 LAN 内的另一个 http 服务器。与依赖防火墙相比,这将是一个更简单的想法。

首先,安装模块:

apt-get install libapache2-mod-proxy-html

创建2个虚拟主机。一个将响应您的站点请求,另一个将代理流量到您的 mc 站点。

<VirtualHost YOUR.INTERNET.IP.ADDR:80>
    ServerAdmin [email protected]
    ProxyPreserveHost On
    ProxyPass / http://LAN.IP.YOUR.MC.SITE:PORT/
    ProxyPassReverse / http://LAN.IP.YOUR.MC.SITE:PORT/
    ServerName mc.myurl.com
</VirtualHost>

<VirtualHost YOUR.INTERNET.IP.ADDR:80>
  ServerAdmin [email protected]
  DocumentRoot /var/www/sites/my_site
  ServerName myurl.com
  ErrorLog logs/intranet-error_log
  CustomLog logs/intranet-access_log common
</VirtualHost>

更多文档在这里:

相关内容