Linux 如何临时将名称解析为本地主机端口?
我用rails开发网站,我正在寻找一种简单的方法为我的应用程序设置动态名称解析。我需要的最后一个产品是:每次启动rails应用程序(通过在应用程序文件夹中键入rails server,我希望在随机端口上运行它,如果我在浏览器上键入应用程序名称(如myapp.dev或其他),它将解析为正确端口上的本地主机 获取应用程序名称和生成随机端口的部分不是问题。问题是如何将名称解析为本地端口。linux上有没有简单的工具允许我这样做 现在,我能想到的最好办法是启动一个守护进程,跟踪rails应用程序的启动时间,注释端口,并在Linux 如何临时将名称解析为本地主机端口?,linux,dns,localhost,resolve,Linux,Dns,Localhost,Resolve,我用rails开发网站,我正在寻找一种简单的方法为我的应用程序设置动态名称解析。我需要的最后一个产品是:每次启动rails应用程序(通过在应用程序文件夹中键入rails server,我希望在随机端口上运行它,如果我在浏览器上键入应用程序名称(如myapp.dev或其他),它将解析为正确端口上的本地主机 获取应用程序名称和生成随机端口的部分不是问题。问题是如何将名称解析为本地端口。linux上有没有简单的工具允许我这样做 现在,我能想到的最好办法是启动一个守护进程,跟踪rails应用程序的启动时
/etc/host
中添加一个带有应用程序名称的条目。然后,每当它收到请求时,它都会根据名称转发到正确的应用程序
我不相信这是最好的方法,因此非常感谢您的想法。我不确定我是否正确理解您的问题,但DNS不是关于端口的。通过使用DNS,您可以将名称解析为IP而不是端口或从IP解析为名称(RevDNS)。在您的情况下,您要做的是在随机端口上启动应用程序时,转发另一个始终相同的端口 例如: 通过iptables将端口80转发到应用程序的随机端口。然后您将始终通过端口80访问应用程序 编辑:我无法将它粘贴到评论中,因为它太长了,所以我在这里给你答案: 您可以创建许多iptables规则,第一个应用程序将位于端口80、下一个81等。在浏览器中,您必须键入:apps.test.com(第一个应用程序)、apps.test.com:81(第二个应用程序)。。 另一种解决方案:如果您想拥有不同的域(而不是在冒号后键入端口),可以使用代理服务器, 并使用VirtualHost重定向到特定的应用程序。在代理配置中,您可以定义app1.test.com转到端口,例如8888,app2.test.com转到端口8889,然后在启动应用程序期间,您可以创建iptables规则或ssh tunel,将整个流量从端口8888重定向到您的随机端口 ruby应用程序。为了不让它变得更复杂,最好使用这些端口 您在代理中配置的,不被您的ruby应用程序使用 “字符串匹配”选项;匹配HTTP请求的主机字段,然后在启动应用程序时进行类似匹配, 创建iptables规则,该规则将通过指定主机字段重定向到端口80的所有内容 您的ruby应用程序端口。最后一个选项是使用SRV dns记录,但在您的 但无论如何,你可以选择所有这些选项,并选择一个最适合你的
你。谢谢你的评论。但这样我只能让一个应用程序同时运行,因为所有应用程序都使用端口80,对吗?既然你说DNS与端口无关,我想除非像我建议的那样使用deamon,否则就没有其他方法了,因为浏览器必须对端口80执行所有请求。对吗?