我能否在/etc/hosts中映射主机名和端口?

222

我能否将IP地址(例如127.0.0.1)映射为一个域名和端口号?

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


6
无法在 /etc/hosts 中映射端口号。相反,你可以将其定义为 127.0.0.1 api.mydomain.com,然后在浏览器中访问时使用 api.mydomain.com:8080 - Fizer Khan
2个回答

225

不,这是不可能的。端口不是主机名的一部分,因此在 hosts 文件中没有意义。


167
如果你确实需要这样做,可以使用反向代理。例如,使用Nginx:
server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}

5
我认为proxy_pass指令的代码应该是这样的:proxy_pass http://127.0.0.1:8000; 我在Nginx 1.4.3版本中出现了“无效的URL前缀”错误提示。 - Nobu
谢谢这个非常棒的提示!对于大多数服务器来说,这是一个简单的解决方案。 - micahscopes
我正在使用这个技巧来映射远程机器的端口(例如,http://cloud.app:80,而实际端口是8080)。对于测试集群中Confluence节点但在相同的基本URL上访问它们非常有用。谢谢! - Gábor Nagy
14
我曾经遇到过同样的问题,使用这个反向代理的解决方案非常有帮助。不过,我想要一个更简单的解决方案,所以我制作了这个工具:https://github.com/cristianoliveira/ergo希望它能在某种程度上对你有所帮助 :) - Cristian Oliveira
1
谢谢@CristianOliveira!这对我帮助很大 :) - Bruno Duyé

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接