我想欺骗我的浏览器转到 localhost:3000 而不是 xyz.com。我进入 OS X 10.5 上的 /etc/hosts 并添加以下条目:
127.0.0.1:3000 xyz.com
这不起作用,但如果不指定端口,这个技巧就有效了。有没有办法通过指定端口来实现这一点?
答案1
不,hosts 文件只是在没有 DNS 服务器时静态解析名称的一种方法。
答案2
hosts 文件用于 DNS 解析。DNS 将名称解析为 IP 地址,恐怕与端口无关。您需要结合使用 hosts 文件来重定向端口(通过更改目标端口来破坏 TCP 标头)。
使用 iptables:
MAC OS 是否使用 iptables / netfilter (我不认为它使用)?如果 OS X 使用 iptables,您可以将 xyz.com 指向 hosts 文件中的某个 ip,如 157.166.226.25,然后:
sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -d 157.166.226.25 -j DNAT --to-destination 127.0.0.1:3000
:-)
答案3
您不需要在 hosts 文件中指定端口。只需像省略端口那样进行输入,如 127.0.0.1 xyz.com,这会将您定向到本地主机,然后只需将端口 3000 添加到 URL 末尾即可...http://xyz.com:3000
答案4
针对此问题的 DNS 解决方案是使用 SRV 记录:
http://en.wikipedia.org/wiki/SRV_record
这些是允许 DNS(最初是“名称到数字”或“数字到名称”的分布式数据库)包含“名称到服务端点”的一种方式,它可以(可选)包含协议和端口。
坏消息是,必须开发应用程序才能使用 SRV 记录,因此它不是您要尝试执行的操作的直接解决方案。