可能重复:
如何使用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存在是不相关的)。 但是,可能会有一些你可以做的事情的组合。
似乎是一个相当的工作,但它会完成你所要求的。
作为虚拟主机的替代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
将其转换为不同的端口。