it-swarm.cn

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

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

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

127.0.0.1:3000 xyz.com

那是行不通的,但是没有指定端口就可以了。有没有办法指定端口?

51
Tony

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

47
Chief A-G

主机文件用于DNS解析。 DNS会将名称解析为IP地址,并且与端口无关。您将需要将其他内容与hosts文件结合使用来重定向端口(通过更改目标端口来使TCP报头)无效)。

使用iptables:
MAC OS是否使用iptables/netfilter(我认为不是)。如果OS X使用iptables,则可以将xyz.com指向主机文件中的某些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

:-)

45
Kyle Brandt

您无需在hosts文件中指定端口。只需像省略端口一样进行输入即可,例如127.0.0.1 xyz.com,这会将您定向到本地主机,然后只需将端口3000添加到URL的末尾即可... http:/ /xyz.com:30

12
stuart Brand

假设您尝试拦截http而不是https,则必须在本地计算机上侦听端口80,但是通过使用-L80:localhost:3000切换到localhost,您也许可以使用ssh的端口转发功能,但是您必须以root身份执行此操作。

拥有在端口3000上运行的任何内容可能会更好,而只需侦听端口80。

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

4
retracile

DNS解决方案是使用SRV记录:

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

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

坏消息是必须开发应用程序才能使用SRV记录,因此这并不是您要执行的操作的直接解决方案。

3
James F

我认为您需要使用某种代理服务器或某些带有防火墙软件的设备来重定向端口连接...

2
Bart Silverstrim

Chief-AG是正确的,因为hosts文件用于静态解析名称(与DNS存在无关)。但是,您可能会做多种事情。

  1. 将主机文件中的记录设置为127.0.0.1 xyz.com
  2. 为虚拟主机配置计算机
  3. 对于您为xyz.com设置的虚拟主机,创建一个重定向到localhost:3000的html文件。

似乎需要做很多工作,但它可以满足您的要求。

2
Forgotten Semicolon

我假设这是为了Rails开发?

1
Ryan

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

1
evilchili

如果您在xyz.com上将Apache用作网络服务器,则可以使用Apache的 ProxyPass 来“转换”为另一个端口。

0
Rory