在asp.net上的asp.net vnext网站上禁用端口80

时间:2015-08-28 10:30:20

标签: asp.net azure ssl https asp.net-core

我觉得这应该很容易,但我很难找到如何做到这一点。

我有一个网站,我想限制为HTTPS。它是部署到Azure的asp.net vnext网站(不是mvc)。它在没有通过ASP.NET管道的情况下提供静态文件。

在以前的asp.net版本中,您可以添加system.webServer规则来执行重定向。这离开了vNext。如果我使用的是Mvc,我可以使用RequireHttps属性,或者我可以编写自定义中间件来进行重定向,但这只会在asp.net管道激活时启动。我的html和js(这是一个SPA应用程序)仍然可以提供。如果我部署到IIS而不是Azure,我可以在那里进行配置。

那么,如何告诉azure网站仅在没有Web配置文件的443端口上进行响应?

2 个答案:

答案 0 :(得分:2)

根据Azure文档,您可以为使用Azure支持的任何编程语言(Node.js,PHP,Python Django,Java)编写的应用程序添加Web配置文件。您可以找到详细信息here.

以下是一个示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <rewrite>
      <rules>
        <rule name="Force HTTPS" enabled="true">
         <match url="(.*)" ignoreCase="false" />
         <conditions>
          <add input="{HTTPS}" pattern="off" />
         </conditions>
         <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
        </rule>
      </rules>
     </rewrite>
  </system.webServer>
</configuration>

您可以通过将web.config文件添加到部署中来实现重定向。文档说:

  

在Azure App Service上托管时,Azure会在部署期间自动创建文件,因此您永远不会看到它。如果您在应用程序中包含一个,它将覆盖Azure自动生成的那个。

答案 1 :(得分:0)

为获得更高的安全级别,您可以使用nsg。 Azure文档将NSG称为“您可以使用Azure网络安全组来过滤往返于Azure虚拟网络中Azure资源的网络流量”。 您可以尝试使用cli创建nsg,然后在其中放置规则以阻止到端口80的流量。