当前位置: 首页 > 知识库问答 >
问题:

Azure Web app 重定向 http 到 https

彭允晨
2023-03-14

我将Azure云与Web应用程序一起使用,我的服务器端写在nodejs上。当Web应用程序收到超文本传输协议请求时,我想将请求重定向到https,我找到了解决方案。我将其放在规则标记内的web.config文件中。

        <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="false" redirectType="Permanent" />
        </rule>

问题是当我在浏览器中键入“https://myURL.com“它重定向到主屏幕,一切正常,但当我将https改为http时”http://myURL.com“它重定向到https://myURL.com/并根据url的外观添加到url“bin/www”http://myURL.com/bin/www”,响应为:页面未找到。

问题是如何在不向url添加数据的情况下重定向清晰的url?

我的网络的一部分。配置文件:

<rewrite>
      <rules>
        <!-- Do not interfere with requests for node-inspector debugging -->
        <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="^bin/www\/debug[\/]?" />
        </rule>
        <!-- First we consider whether the incoming URL matches a physical file in the /public folder -->
        <rule name="StaticContent">
          <action type="Rewrite" url="public{REQUEST_URI}" />
        </rule>
        <!-- All other URLs are mapped to the node.js site entry point -->
        <rule name="DynamicContent">
          <conditions>
            <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" />
          </conditions>
          <action type="Rewrite" url="bin/www" />
        </rule>
        <!-- Redirect all traffic to SSL -->
         <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="false" redirectType="Permanent" />
        </rule>
      </rules>
    </rewrite>
    <!-- 'bin' directory has no special meaning in node.js and apps can be placed in it -->
    <security>
      <requestFiltering>
        <hiddenSegments>
          <remove segment="bin" />
        </hiddenSegments>
      </requestFiltering>
    </security>

谢谢你的回答,迈克尔。

共有3个答案

公瑞
2023-03-14

对此也有一个免费的开源扩展。

  1. 转到Web App设置侧栏,搜索“扩展”选项卡并单击“添加”

重新启动Web应用程序以使操作立即生效。

搞定了。

有关此扩展实现的更多详细信息,请查看 GitHub 上的源代码。最重要的源文件是应用程序主机.xdt

GitHub的报价(2017年8月2日)(学分转至gregjogan):

applicationhost.xdt

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
    <location path="%XDT_SITENAME%" xdt:Transform="InsertIfMissing" xdt:Locator="Match(path)">
        <system.webServer xdt:Transform="InsertIfMissing">
            <rewrite xdt:Transform="InsertIfMissing">
                <rules xdt:Transform="InsertIfMissing" lockElements="clear">
                    <rule name="redirect HTTP to HTTPS" enabled="true" stopProcessing="true" lockItem="true">
                        <match url="(.*)" />
                        <conditions>
                            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                            <add input="{WARMUP_REQUEST}" pattern="1" negate="true" />
                        </conditions>
                        <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
                    </rule>
                </rules>
            </rewrite>
        </system.webServer>
    </location>
</configuration>
莘绍元
2023-03-14

截至2017年11月,这是Azure门户中的一个简单切换:自定义域下的“仅HTTPS”。

https://blogs.msdn.microsoft.com/benjaminperkins/2017/11/30/how-to-make-an-azure-app-service-https-only/

在ARM中也很容易:"httpsOnly": true

帅彦
2023-03-14

转到Azure portal并打开您想要设置为仅HTTPS的(Web)应用服务的概述页面。在侧栏的设置部分下,有一个TLS/SSL设置选项。

点击它,你会在屏幕上看到一个选项,将你的应用程序的协议设置为仅HTTPS。没有必要为此手动添加单独的规则集。

这适用于每一层应用服务计划,包括“F”系列(免费订阅)。

请注意,如果要添加任何自定义域,则还需要添加相应的SSL绑定,则可以使用LetsEncrypt或类似方式轻松获取它们。如果应用的任何自定义主机名缺少 SSL 绑定,则:

启用HTTPS Only时,在这些自定义主机名上访问您的应用程序的客户端将看到安全警告。

PS:我刚刚看到这个问题是大约3年前提出的,当时可能没有直接的选择。但即便如此,我还是发布了我的答案,因为在谷歌(截至2020年2月)上,这个问题在Azure的自动HTTPS重定向中仍然排名第一。

 类似资料:
  • 问题内容: __Apache 环境中心 尝试设置从http到https的自动重定向 我尝试将以下内容添加到我的httpd.conf中,但是没有用 有任何想法吗? 问题答案: 我实际上已经遵循了这个示例,并且对我有用:) 然后做:

  • 奇怪的问题。我使用FullCalendar向服务器上的endpoint发起ajax请求。终点是: 请注意,它是显式的HTTPS。但是,当我发起一个请求时(即当Fullcalendar发起一个请求时),我会得到一个301和一个到非HTTPSendpoint的重定向: 因为页面是通过HTTPS加载的,所以失败。 endpoint工作正常--当我将它加载到浏览器中时,我会得到预期的json输出(通过ht

  • 我们使用拉维5。要将http连接重定向到https,请使用中间件HttpsProtocol。 在我们的4个测试用例中,只有1个正确工作(最后一个重定向)。其他3种情况的中间件添加了url extra index.php。 http://www.aqualink.az/index.php ---

  • 我想问一下HTTP到HTTPS的重定向。正如我们所知,重定向是通过从web服务器端重定向来实现的。但是,当涉及到https重定向时,它可以通过两种方式完成,服务器端()和应用程序端()。我想知道: 以下哪种方法有效且性能更好。 考虑到同一服务器上的多个域和域,每种方法的优缺点 非常感谢。 参考: 将Laravel中的WWW重定向到非WWW-堆栈溢出

  • 请不要向我推荐超过173票的长而详细的帖子。这对我不起作用。我也试过很多其他的(1,2,3,4)。他们都给我太多的重定向或错误500。因此,我的问题是: 用我的电流。htaccess,这就是发生的情况: https://www.dukescasino.com/-工作完美 https://dukescasino.com/-重定向到上面的内容,这很好 下面的两个选项加载罚款,但它应该重定向到https

  • 问题内容: 我如何在Spring Webflux中配置http-> https重定向?我需要将所有请求重定向到(据我所知,任何请求都应具有http状态响应,并带有更改http-> https)。在文档中未找到有关此信息的任何信息。我找到了这个答案,但它与tomcat有关。我有净值。 问题答案: 我找到了方法,希望对您有所帮助:

  • RewriteCond%{SERVER\u PORT}上的RewriteEngine!443重写规则^(/(.*)?$https://%{HTTP_HOST}/$1[R=301,L] 这是我在. htaccess文件中使用的命令,当我键入arion-software.co.uk它不能正确重定向。任何想法?

  • 如何在spring WebFlux中配置HTTP->HTTPS重定向?我需要将所有请求重定向到(根据我的理解,任何请求都应该具有http状态响应,并更改HTTP->HTTPS)。在文档中没有找到任何关于它的信息。我找到了这个答案,但它与Tomcat有关。我有奈蒂。