我可以使用/ etc / hosts映射主机名和端口吗?[关闭]


188

我可以将IP地址映射127.0.0.1到域名端口吗?

例如,我想映射127.0.0.1api.example.com:8000


6
您不能在/ etc / hosts中映射端口号。相反,您可以定义as 127.0.0.1 api.mydomain.com并在浏览器中访问它,例如api.mydomain.com:8080
Fizer Khan

我在某处读到dns支持此功能。您可以在www.example.com上有一个记录,说http在端口80上,还可以有一个A记录,说该地址是127.0.0.1,它还表示它不受很好的支持。在那之后没有多说。
ctrl-alt-delor 2014年

Answers:


184

不,那不可能。该端口不是主机名的一部分,因此在hosts-file中没有任何意义。


133

如果确实需要执行此操作,请使用反向代理。

例如,使用nginx作为反向代理

server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}

4
我认为proxy_pass的行应如下所示:proxy_pass http://127.0.0.1:8000;我在nginx 1.4.3上收到了“无效的URL前缀”。
Nobu

感谢您的精彩提示!适用于大多数服务器的简单解决方案。
micahscopes 2013年

我正在使用此技巧来映射远程计算机的端口(例如,cloud.app80,而实际端口为8080)。对于测试群集的Confluence节点但在相同的基本URL上访问它们非常有用。谢谢!
的Gabor纳吉

9
我有基本相同的问题,使用此反向代理的解决方案确实很有帮助。虽然,我想要一个更简单的解决方案,所以我做了这个工具:github.com/cristianoliveira/ergo 我希望它能以某种方式提供帮助:)
Cristian Oliveira,

谢谢@CristianOliveira!
这帮
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.