我可以在OS X上的/ etc / hosts的条目中指定一个端口吗?

可能重复:
如何使用DNS将域名redirect到我的服务器上的特定端口

我想欺骗我的浏览器去localhost:3000而不是xyz.com。 我进入OS X 10.5的/ etc / hosts并添加了以下条目:

127.0.0.1:3000 xyz.com 

这是行不通的,但没有指定端口的技巧。 有没有办法指定端口?

    不,主机文件只是在没有DNS服务器时静态parsing名称的一种方法。

    主机文件用于DNSparsing。 DNS将名称parsing为IP地址,与端口无关。 您将需要与主机文件一起使用其他内容来redirect端口(通过更改目标端口来处理TCP标头)。

    用iptables:
    MAC OS使用iptables / netfilter(我不认为它)..? 如果OS X使用iptables,则可以将xyz.com指向主机文件(如157.166.226.25)中的某个ip,然后:

     sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 157.166.226.25 -j DNAT --to-destination 127.0.0.1:3000 

    🙂

    您不需要在hosts文件中指定端口。 只需要像删除端口一样进行input,就像在127.0.0.1 xyz.com中一样,这将引导你到你的本地主机,然后只需将3000端口添加到你的URL的末尾… http://xyz.com :3000

    假设你试图拦截http而不是https,你必须在本地机器的端口80上监听,但是你也许可以使用ssh的localhost和-L80:localhost:3000来使用ssh的端口转发function-L80:localhost:3000 ,但你必须以root身份执行此操作。

    在3000端口上运行它可能会更好,只是听80端口。

    如果您控制您和xyz.com之间的路由器,则可以改为设置端口转发规则。

    我认为你需要使用某种代理服务器,或者用防火墙软件来redirect端口连接。

    Chief-AG是正确的,主机文件用于静态parsing名称(DNS存在是不相关的)。 但是,可能会有一些你可以做的事情的组合。

    1. 将hosts文件中的logging设置为127.0.0.1 xyz.com
    2. 为您的机器configuration虚拟主机 。
    3. 对于您为xyz.com设置的虚拟主机,创build一个redirect到localhost:3000的html文件

    似乎是一个相当的工作,但它会完成你所要求的。

    作为虚拟主机的替代scheme,您可以创build一个侦听端口80并转发到localhost:3000的ssh隧道。

    DNS解决scheme是使用SRVlogging:

    http://en.wikipedia.org/wiki/SRV_record

    这是一种允许DNS(最初是“从名字到数字”或“从数字到名称”)分布式数据库的方式,以包括“名称到服务端点”,其可以(可选地)包括协议和端口。

    坏消息是,应用程序必须开发使用SRVlogging,所以它不是一个你想要做的解决scheme。

    我假设这是为铁轨发展? 如果是,则运行脚本/服务器-p 80使其在标准Web端口上运行。 那么你的xyz.com将工作

    如果您在xyz.com上使用Apache作为Web服务器,则可以使用Apache的ProxyPass将其转换为不同的端口。