gpt4 book ai didi

linux - 如何临时将名称解析为本地主机端口?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:55:52 25 4
gpt4 key购买 nike

我用 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​​ 应用程序使用。你也可以检查,iptables“字符串匹配”选项;匹配 HTTP 请求的主机字段,然后在启动应用程序时类似地,创建 iptables 规则,它将重定向到端口 80 的所有内容,并指定主机字段到你的 ruby 应用程序端口。最后一个选项是使用 SRV dns 记录,但它在您的情况。但无论如何,您可以尝试所有这些选项,然后选择最适合的选项你。

关于linux - 如何临时将名称解析为本地主机端口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26161170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com