【发布时间】:2019-12-04 15:26:40
【问题描述】:
我在 IIS 中创建了一个网站,并在该网站上托管了一个 ASP.NET 网络服务。对 Web 服务的请求将由第 3 方应用程序发送到以下 URL:
https://www.mywebsite.com/MyWebservice/api/dosomething
当我将网站的 HTTPS 绑定设置为默认端口 443 时,一切正常(没有证书问题或其他任何问题)。
但由于默认端口 443 可能被其他软件阻止,我想移动到另一个端口(例如 7443)。更改调用 URL 以添加正确的端口是没有选择的,因为端口可能因客户而异(可能发生,我们必须移动到端口 6443 或 8443)。
第一个问题: 我是否必须将我的 HTTPS 绑定更改为端口 7443 或将其保留在端口 443 上?我想我必须将其更改为端口 7443。
第二个问题: 我安装了模块“URL Rewrite”并使用 IIS 的 GUI 在 applicationHost.config 中创建了一个规则。但是每次收到请求时,我都会收到错误“net::ERR_CONNECTION_REFUSED”。我创建了一个传入防火墙规则,为传入流量启用端口 7443,但没有成功。
我在 applicationHost.config 中的规则如下所示:
<rewrite>
<globalRules>
<rule name="Redirect to port 7443" stopProcessing="true">
<match url="www.mywebsite.com/(.*)" />
<conditions logicalGrouping="MatchAny">
<add input="{SERVER_PORT}" pattern="^7443$" negate="true" />
</conditions>
<action type="Redirect" url="https://www.mywebsite.com:7443/{R:1}" />
</rule>
</globalRules>
</rewrite>
我在这个问题中找到了规则:How do I redirect a specific port in the IIS server to an other port
我在上述问题的答案中也使用了该规则,但没有成功。
如果我输入我网站的空白 URL (https://www.mywebsite.com),浏览器告诉我,该网站无法访问。如果我扩展端口 ((https://www.mywebsite.com:7443),浏览器将显示为“Hello world”index.html。
第三个问题:我必须在哪个级别添加“URL Rewrite”规则(applicationHost.config、网站的web.config 或webservice 的web.config)?我只想将请求重定向到我的网站/网络服务到不同的端口。
希望有人能帮我解决这个问题。
最好的问候
迈克尔
【问题讨论】:
-
“因为默认端口 443 可能被其他软件阻止”是您应该透露更多信息的地方。在同一个端口 443 上,您可以托管许多站点/应用程序,尤其是在启用 SNI 的 IIS 8 及更高版本上,因此很少需要在非标准端口上托管您的站点。
-
非常感谢 Lex 提供启用 SNI 的提示。我对这些东西很陌生,所以我的想法是,端口被阻止了,但是在阅读了有关 HTTPS、证书和绑定的更多信息后,我理解,当我为请求选择正确的证书时,IIS 出现问题有多个 HTTPS 绑定到同一个端口。 IIS 7.x 有什么解决方案吗?此旧版本的 IIS 不支持 SNI。
-
在 IIS 7.x 上,您需要多个 IP 地址,以便您可以设置多个基于 IP 的证书映射。