Redirect 将请求从端口443重定向到IIS中的某个其他端口

Redirect 将请求从端口443重定向到IIS中的某个其他端口,redirect,iis,port,Redirect,Iis,Port,我在IIS中创建了一个网站,并在此网站上托管了一个ASP.NET web服务。对webservice的请求将由第三方应用程序发送到以下URL: 当我将我的网站的HTTPS绑定设置为默认端口443时,一切正常(没有证书问题或其他任何问题) 但是由于默认端口443可能被其他软件阻塞,我想移动到另一个端口(例如7443)。更改调用URL以添加正确的端口不是选项,因为不同的客户的端口可能不同(可能会发生,我们必须移动到端口6443或8443) 第一个问题: 我必须将HTTPS绑定更改为端口7443还是

我在IIS中创建了一个网站,并在此网站上托管了一个ASP.NET web服务。对webservice的请求将由第三方应用程序发送到以下URL:

当我将我的网站的HTTPS绑定设置为默认端口443时,一切正常(没有证书问题或其他任何问题)


但是由于默认端口443可能被其他软件阻塞,我想移动到另一个端口(例如7443)。更改调用URL以添加正确的端口不是选项,因为不同的客户的端口可能不同(可能会发生,我们必须移动到端口6443或8443)

第一个问题: 我必须将HTTPS绑定更改为端口7443还是将其保留在端口443上?我想我得把它换成7443端口

第二个问题: 我安装了模块“URL重写”,并使用IIS的GUI在applicationHost.config中创建了一条规则。但每次请求进来时,我都会收到一个错误“net::ERR\u CONNECTION\u拒绝”。我已经创建了一个传入防火墙规则来为传入流量启用端口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>

我在回答上述问题时也使用了这个规则,但没有成功

<> >如果我输入了我网站的空白网址(浏览器)告诉我,网站是无法到达的。如果扩展端口((),浏览器将显示“Hello world”index.html

第三个问题:我必须在哪个级别添加“URL重写”规则(applicationHost.config、web.config或web.config)

我希望有人能帮我解决这个问题

致意

迈克尔

我必须将HTTPS绑定更改为端口7443还是将其保留在端口443上?我想我必须将其更改为端口7443

正如lex所说,我们可以将多个域绑定到同一443端口。当请求到达服务器时,IIS将检查域,然后将请求重定向到正确的应用程序。在我看来,没有必要使用新端口

要实现这一点,您应该在IIS站点绑定的主机名文本框中添加域

我安装了“URL重写”模块,并使用IIS的GUI在applicationHost.config中创建了一个规则。但每次请求传入时,我都会收到一个错误“net::ERR_CONNECTION_densed”。我创建了一个传入防火墙规则,以启用端口7443来处理传入流量,但没有成功

我发现你的url重写规则匹配url值是错误的,它将不匹配任何内容。匹配url部分将只匹配url的模式,而不匹配域

此外,如果使用站点绑定,则无需添加url重写规则

我必须在哪个级别添加“URL重写”规则(applicationHost.config、web站点的web.config或web服务的web.config)?我只想将对我的web站点/web服务的请求重定向到其他端口


在我看来,您可以将url重写规则添加到web.config中。例如,如果您想将url从443端口重定向到7743。您可以将url重写规则添加到443的应用程序web.config文件中。

“因为默认端口443可能被其他软件阻止”是你应该透露更多信息的地方。在同一个端口443上,你可以承载许多站点/应用程序,特别是在启用SNI的IIS 8和更高版本上,因此很少需要在非标准端口上承载你的站点。非常感谢Lex提示启用SNI。我对这方面非常陌生,所以我的想法是,端口被阻止了,但是阅读了有关HTTPS、证书和绑定的更多信息后,我了解到,当我有多个HTTPS绑定到同一端口时,IIS在为请求选择正确的证书时遇到问题。IIS 7.x是否有任何解决方案?旧版本的IIS不支持SNI。在IIS 7.x上,您需要多个IP地址,因此您可以设置多个基于IP的证书映射。感谢Brando的解释。我认为Lex启用SNI(用于IIS 8及以上版本)的答案是正确的解决方案,因为它将证书的绑定从IP:port更改为hostname:port。您可以通过调用“netsh http show sslcert”来检查这一点。如果未启用SNI,则证书将绑定到0.0.0.0:443,启用SNI后,证书将绑定到www.mywebsite.com:443。