• 【应用服务 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> 
  • 相关阅读:
    BIM软件小技巧:Revit2014所有快捷键汇总表格
    ubuntu下启动、关闭tomcat,查看tomcat运行日志
    Ubuntu14.04下安装tomcat
    ubuntu eclipse 不能新建javaweb项目解决方案
    在Ubuntu 14.04中安装最新版Eclipse
    Ubuntu14.04下jdk的安装
    Ubuntu14.04安装JDK与配置环境变量
    ubuntu14.04完全卸载mysql
    Ubuntu14.04下MySQL的安装
    ubuntu14.04切换root用户
  • 原文地址:https://www.cnblogs.com/lulight/p/13875393.html
Copyright © 2020-2023  润新知