我已将我们公司的内部网网站部署到 IIS 7 服务器并添加了以下绑定信息。
IP地址:全部未分配端口:3333域名:subdomain_name.domain_name.com
虽然网站部署在3333端口,但我希望无需端口即可访问网站。
我也在 dns 中添加了条目。我可以 ping 完全合格的域名 (subdomain.domain.com),但是当我在浏览器中添加该 URL 时,我得到 404。
当网站部署在端口 80 下时,它工作正常。但是,当我的网站托管在默认端口 (80) 以外的任何端口上时,它就无法工作。
有没有办法做到这一点?
答案1
当您输入没有端口的 URL 时,则暗示端口 80。
据我所知,没有任何浏览器可以改变这种行为;如果您想使用端口 3333,那么您将需要它在 URL 中。
答案2
您可以使用反向代理将所有 HTTP 请求静默重定向到另一个端口。显然,仍然应该有一个站点绑定到 TCP 端口 80(即在未指定特定端口时使用的端口),您将配置该站点以将其重定向到另一个端口。
使用 IIS 7 + URL 重写模块 + 应用程序请求路由(或者如果您喜欢 Apache 风格的配置,则使用 IIS 7 + Helicon Ape)是可能的。
问题是——如果您可以将站点绑定到端口 80,那么为什么需要在端口 3333 上运行它?
答案3
当您将 IIS 站点分配到 TCP 端口时,IIS 进程实际上会绑定到该 TCP 端口。这意味着该 TCP 端口上的任何连接(堆栈级别过滤较少,例如:软件防火墙)都由该 IIS 站点实例提供服务。
你可以做的是:
- 为您希望发往托管站点的服务器的 FQDN 创建一个 CNAME(如果它在同一台服务器上,可以)。
- 创建一个 IIS 站点以绑定到端口 80。
- 在站点属性的“网站”选项卡中,单击“IP 地址”旁边的“高级”。将主机头值更改为 FQDN。
- 然后,在站点属性的“主目录”选项卡上,重定向到以下 URL:http://CNAME:[绑定港口]
例如,用户点击:http://redmine
- redmine 的 CNAME 是 192.168.10.101(WEBSERVER2)。
- 然后他们的浏览器连接到 192.168.10.101:80(这是默认的 TCP HTTP 端口,除非另有说明,所有浏览器都会访问此端口)。
- 为 192.168.10.101:80 提供服务的 IIS 站点有一条规则,用于检查主机头中的源 NAME 命中...匹配,好的...执行重定向规则。
- 重定向规则将用户的浏览器重定向至http://redmine:8080
用户所做的只是点击http://redmine
这显然允许您在单个机器上托管多个站点。如果您愿意,可以称之为“虚拟主机”。