14 iis apache-2.2
我想配置 Windows主机文件以根据 IP 地址 + 端口发送主机请求。
例如:
127.0.0.1:80 www.site1.com
127.0.0.1:8080 www.sitetwo.com
Run Code Online (Sandbox Code Playgroud)
因为我让 Apache 在端口 8080 和 IIS 上侦听端口 80(默认)。
所以,我认为最好的方法是修改hosts文件。它不会影响任何事情。我既没有收到任何错误,也没有收到任何消息。
小智 11
你不能。主机文件就是--hosts。它相当于本地计算机中的“短路”DNS。DNS 也无法将您发送到端口。
为了实现您想要做的事情,您需要在 IIS 或 Apache 下设置虚拟主机,并使用它(基于 HTTP Host: 标头)让服务决定显示哪个站点。但是,如果您想同时使用 IIS 和 Apache 执行此操作,这对您没有帮助。
小智 5
hosts文件仅用于主机名解析<hostname>:<port>,默认端口80127.0.0.1也就是localhost (在主机文件中定义)。为避免可能的其他现有/正在运行的服务器之间发生冲突,该应用程序通常允许您更改端口,但不允许更改 IP 地址。
2a. 如果您可以将服务器 ip 地址更改为回送保留地址空间 中的另一个地址127.0.0.0/8,那么您可能不会尝试在主机文件中设置端口。
您可以使用Windows 包含的网络工具netsh作为端口代理来解决此问题。
example.app
| <--browser defaults to port 80
+--> example.app:80
| <--Hostname resolution by Hosts File
+--> 127.65.43.21:80
| <--Link by netsh Utility
+--> 127.0.0.1:8081
Run Code Online (Sandbox Code Playgroud)
localhost:8081127.65.43.21 example.app
127.0.0.0/8可以使用网络中的任何免费地址。127.65.43.21:80没有被其他服务占用。netstat -a -n -p TCP | grep "LISTENING"netsh interface portproxy add v4tov4 listenport=80 listenaddress=127.65.43.21 connectport=8081 connectaddress=127.0.0.1http://example.app注意:
- 这些命令/文件修改需要以管理员权限执行
- 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
注意:这个答案是我在 stackoverflow 上的这个类似问题/答案中讨论的答案的重复。
| 归档时间: |
|
| 查看次数: |
58156 次 |
| 最近记录: |