在Windows主机文件中使用端口号

在安装TeamViewer之后,我将wampserver端口更改为8080,因此地址为http://localhost:8080.

对于位于C:\ WINDOWS \ system32 \ drivers \ etc \的主机文件,我也进行了如下更改

之前
127.0.0.1 www.example.com


127.0.0.1:8080 www.example.com

当我访问www.example.com时,它没有指向我的wampserver,我该如何解决?

谢谢

hosts文件仅用于主机名parsing(在Windows以及类Unix系统上)。 你不能把端口号放在那里,并且没有办法用通用的操作系统级别的configuration来做你想要的 – 浏览器是select端口的select。

所以使用书签或类似的东西。
(某些防火墙/路由软件可能允许出站端口redirect,但这听起来不像是一个吸引人的选项。)

您可以通过Fiddler 2应用程序修改主机文件来达到目的。

按着这些次序:

  1. 安装Fiddler2
  2. 导航到Fiddler2菜单: – 工具 > HOSTS ..(点击select)
  3. 像这样添加一行: –

    localhost:8080 www.mydomainname.com

  4. 保存文件,然后在浏览器中检出www.mydomainname.com

我设法通过使用Windows包括networking工具netsh实现这一点。

正如Mat指出的那样:hosts文件仅用于主机名parsing,所以两者的组合对我来说都是诀窍。


概观

 example.app:80 | <--Link by Hosts File +--> 127.65.43.21:80 | <--Link by netsh Utility +--> localhost:8081 

操作

  • localhost:8081上启动我的服务器localhost:8081
  • 主机文件中的“本地DNS”添加为新行
    • 127.65.43.21 example.app
      • 可以使用networking127.0.0.0/8中的任何空闲地址。
      • 注意:我假设127.65.43.21:80没有被另一个服务占用。
      • 你可以用netstat -a -n -p TCP | grep "LISTENING" netstat -a -n -p TCP | grep "LISTENING"
  • 使用netsh命令实用程序添加了以下networkingconfiguration
    • netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1
  • 我现在可以通过http://example.app访问服务器

笔记:
– 这些命令/文件修改需要使用pipe理员权限执行

– netsh portproxy需要ipv6库,甚至只使用v4tov4,通常它们也将被默认包含在内,否则使用以下命令安装它们: netsh interface ipv6 install


您可以看到使用以下命令添加的条目

netsh interface portproxy show v4tov4

您可以使用以下命令删除条目

netsh interface portproxy delete v4tov4 listenport=80 listenaddress=127.65.43.21


资源链接:

  • 使用Netsh
  • 接口IP的Netsh命令
  • 接口Portproxy的Netsh命令
  • Windows端口转发示例

Fiddler2 – >规则 – >自定义规则

然后在下一个脚本的末尾find函数OnBeforeRequest:

 if (oSession.HostnameIs("mysite.com")){ oSession.host="localhost:39901"; } 

– 你可以使用127.0.0.0/8networking中的任何空闲地址,在我的情况下需要这个python烧瓶,这就是我所做的:在主机文件中添加这一行(你可以find它是windows下:C: \ Windows \ System32 \ drivers \ etc):

 127.0.0.5 flask.dev 
  • 确保端口是默认的端口“80”在我的情况下,这是在python烧瓶: app.run("127.0.0.5","80")

  • 现在运行你的代码并浏览flask.dev

如果发生的事情是你有另一台服务器运行在本地主机,你想给这个新的服务器一个不同的本地主机名像http://teamviewer/

我认为你实际上正在寻找的是虚拟主机function。 我使用Apache,所以我不知道其他Web守护进程如何支持这一点。 也许它被称为别名。 这里是Apache文档:

Apache虚拟主机的例子

最简单的方法是使用Ergo作为反向代理: https : //github.com/cristianoliveira/ergo

你设置你的服务和它的IP:PORT和ergo为你路由:)。

你可以用nginx或者apache来实现,但是你需要configuration它们。