【问题标题】:IP:Port mapping to a nameIP:端口映射到名称
【发布时间】:2011-10-30 12:45:59
【问题描述】:

我在运行 WEBrick 的机架空间服务器上部署了多个 Rails 应用程序。它们每个都在不同的 TCP 端口上运行。

我可以使用ptotem.com(我的域名)访问端口 3000。
我可以使用ptotem.com:3001ptotem.com:3002...访问其他应用程序,但我想使用appl_one.ptotem.comapp_two.ptotem.com 访问它们。

我如何使用 DNS 做到这一点?

【问题讨论】:

  • 你在rails旁边也运行apache吗?您是否有在 ptotem.com 上运行的网络服务器(即在端口 80 上)?如果是这样,您必须深入研究 url 重写或重定向。
  • 不,我没有运行 apache。只有 webrick。

标签: ruby-on-rails dns virtualhost webrick


【解决方案1】:

在 linux 上,您需要在 /etc/hosts 文件中添加一行。

用于本地主机、测试等

127.0.0.1 appname.com

或专用网络

192.168.x.x appname.com

或公开

210.32.197.4 appname.com

【讨论】:

    【解决方案2】:

    你真的不能那样做,DNS 命名机制和 TCP/IP 端口机制是两个独立的、不相关的实体,它们存在于OSI model 的不同层上。如果您考虑一下,appl_one.ptotem.com:3000appl_one.ptotem.com:3001appl_one.ptotem.com:3002 仍然有效,可以让您访问不同的应用程序。

    如果您的名称服务器和您的应用程序都支持SRV records,您也许可以使用它们,但目前对此的支持充其量是稀疏和不稳定的。

    对于 HTTP 应用程序,您可以考虑的另一件事是在同一端口上运行它们并使用带有 this 之类的虚拟主机。

    当我需要做这样的事情时,我通常将我的 NIC 设置为具有多个 IP(或者如果它们不支持,则添加更多 NIC)并将我的应用绑定到特定 IP,但老实说,为了在连接字符串的末尾键入 :port,您实际上需要这样做是非常罕见的......

    【讨论】:

    • 你好,谢谢你的回答。但是我没有运行 apache。webrick 的任何解决方案?对不起,我在服务器方面有点新手,所以我可能会问一些很常见的问题!
    • 我对 webrick 几乎一无所知。简单地环顾一下互联网,看起来并没有太多支持这一点的方式,尽管 webrick 的文档(显然)是出了名的糟糕。您对托管服务器有多少控制权?如果可能的话,你应该尝试转移到 Apache、Nginx 等,尤其是如果这是一个生产应用程序...我重新标记了这个问题,以帮助你获得合适的人的关注。