• 【应用服务 App Service】 App Service Rewrite 实例


    问题描述

    在使用Azure App Service(应用服务)时,有时候需要在不同的站点之间进行跳转,但是希望通过通过访问同一个域名的方式来实现反向代理。如果创建应用时候选择的是Window服务,这时候可以参考以下的方式配置IIS 的Proxy + Rewrie

    如网站一为PHP站点,它的首页是:https://lbphptest.chinacloudsites.cn/, 网站二是Java站点,它的首页是:https://lbjavatest.chinacloudsites.cn/

    站点一:PHP

    站点二:JAVA

    在使用反向代理后,在站点一种配置Proxy代理后,请求就会发送到Java站点,但是URL显示的依旧为PHP站点地址。

    设置步骤

    一: 准备好两个App Service站点

    二:在需要做方向代理的站点种添加applicationHost.xdt和web.config 文件,如以上的例子中使用的是PHP站点作为代理站点。

    • 添加ApplicationHost.xdt文件,开启Proxy enable属性为true。文件需要添加在D:homesite下,与wwwroot目录同级

    ApplicationHost.xdt的内容为:

    <?xml version="1.0"?>
    <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
        <system.webServer>
            <proxy xdt:Transform="InsertIfMissing" enabled="true" preserveHostHeader="false" reverseRewriteHostInResponseHeaders="false" />
        </system.webServer>
    </configuration>
    • 添加web.config文件,设置rewrite的规则。

    web.config的内容为(高亮部分即为需要配置的跳转站点):

    <configuration>  
    <system.webServer>  
    <rewrite>  
    <rules>  
    <rule name="Proxy" stopProcessing="true">  
    <match url="^proxy/?(.*)" />  
    <action type="Rewrite" url="http://lbjavatest.chinacloudsites.cn/{R:1}" />  
    </rule>  
    </rules>  
    </rewrite>  
    </system.webServer>  
    </configuration>

    注:完成以上步骤后,需要重启PHP站点。

    参考资料

    Web 应用如何实现反向代理转发功能:https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-howto-realize-reverse-proxy-and-forward-function

    URL Rewrite Module Configuration Reference:https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/url-rewrite-module-configuration-reference#redirect-action

     Rewrite Rules Overview

    A rewrite rule defines the logic of what to compare or match the request URL with, and what to do if the comparison is successful.

    Rewrite rules consists of the following parts:

    • Pattern – The rule pattern is used to specify either the regular expression or a wildcard pattern that is used to match URL strings.
    • Conditions – The optional conditions collection is used to specify additional logical operations to perform if a URL string matches the rule pattern. Within the conditions, you can check for certain values of HTTP headers or server variables, or verify if the requested URL corresponds to a file or directory on a physical file system.
    • Action – The action is used to specify what to do if the URL string matches the rule pattern and all the rule conditions are met.

    附加一: App Service中启动jar包的web.config中加入rewrite规则

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <system.webServer>
     
        <!-- BEGIN rule TAG FOR HTTPS REDIRECT -->
        <rewrite>
          <rules>
            <rule name="Force HTTPS" enabled="true">
              <match url="(.*)" ignoreCase="false" />
              <conditions>
                <add input="{HTTPS}" pattern="off" ignoreCase="true" />
                      <add input="{HTTP_USER_AGENT}" pattern="Initialization" ignoreCase="true" negate="true" />
                      <add input="{HTTP_USER_AGENT}" pattern="SiteWarmup" ignoreCase="true" negate="true" />
                      <add input="{HTTP_USER_AGENT}" pattern="AlwaysOn" ignoreCase="true" negate="true" />
              </conditions>
              <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" />
            </rule>
          </rules>
        </rewrite>
        <!-- END rule TAG FOR HTTPS REDIRECT -->
     
        <handlers>
          <add name="httpPlatformHandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
        </handlers>
        <!-- https://docs.microsoft.com/en-us/iis/extensions/httpplatformhandler/httpplatformhandler-configuration-reference -->
        <httpPlatform processPath="%JAVA_HOME%injava.exe"
             arguments="-Djava.net.preferIPv4Stack=true -Dfile.encoding=UTF-8 -Dserver.port=%HTTP_PLATFORM_PORT% -jar &quot;%HOME%sitewwwrootwhat.jar&quot;"
             startupTimeLimit="300"
             startupRetryCount="10"
             requestTimeout="00:05:00"
             >
        </httpPlatform>
      </system.webServer>
    </configuration> 
  • 相关阅读:
    20162309《程序设计与设计结构》第一周学习总结
    20162309《程序设计与数据结构》课程总结
    网络编程与安全实验报告
    四则运算挑战出题
    Android实验报告
    四则运算第二周实验报告
    XP实验报告
    20162319 2017-2018-1 《程序设计与数据结构》第3周学习总结
    20162319 2017-2018-1 《程序设计与数据结构》第1周学习总结
    结对编程-马尔克夫链
  • 原文地址:https://www.cnblogs.com/lulight/p/13875393.html
Copyright © 2020-2023  润新知