我觉得这应该很容易,但我很难找到如何做到这一点。
我有一个网站,我想限制为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端口上进行响应?
答案 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的流量。