Azure上的APP Gateway是七层负载均衡服务,WAF是APP Gateway服务的扩展。在实现七层负载均衡的同时,增加了WAF的功能,可以对后台的HTTP服务进行保护。

Azure WAF采用的是开源的ModSecurity的OWASP core rule sets实现的WAF功能。具体请参考ModSecurity的网站:https://modsecurity.org/

目前Azure支持OWASP CRS的版本有3.0和2.2.9两个版本。并可以根据需求,enable或disable库中的某个功能:

本文将介绍,目前APP Gateway和WAF还不支持的一个功能:Http跳转到Https借助Haproxy实现。

一、拓扑结构

具体的结构如下:

1. 用户发起http请求,

2. APP Gateway根据后端的Server情况,转发到后台的haproxy的80端口,

3. Haproxy收到http请求后,做http的redirect,到APP Gateway的https

4. 用户发起https请求

5. APP Gateway进行SSL的offload,如果配置了WAF,将对http内容进行检测,防止各种攻击

6. APP Gateway根据后端的Server情况,转发8080端口到haproxy,haproxy将8080的请求转发到Nginx的800端口。

二、 APP Gateway的配置

具体创建过程不再描述了,具体描述http和https的两种rule的定义:

1. listener

配置http和https两个listner

2. rules

http的rules:

Httpsd rules:

3. http setting

添加https的设置:

其它的采用默认配置就ok。

三、Haproxy的配置

在VM中安装haproxy,并增加如下配置:

#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend main *:
mode http
redirect location https://x.x.x.x
frontend main *:
mode http
default_backend static
#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
backend static
balance roundrobin
server static 127.0.0.1: check

可以看到,haproxy监听80和8080两个端口。80端口的请求将直接转发到app gateway的https,8080端口将转发给800端口的Nginx服务。

四、Nignx配置

Nginx只需要把服务端口改为800即可。

五、测试

浏览器输入APP Gateway的地址:

http://139.219.232.180/

将会转发到https:

Azure上通过haproxy实现APP Gateway或WAF的http跳转https的更多相关文章

  1. 在Azure上部署IPv6的App通过IOS App Store审核

    随着中国企业出海Go Global,越来越多的用户开始在Global Azure部署自己的应用.由于对Global Azure功能和文档的不熟悉,使用过程中或多或少遇到了一些坑.事实上呢,这些并不是坑 ...

  2. [文章存档]Azure上部署的java app在向第三方服务传送中文时出现乱码

    https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-java ...

  3. Azure上七层负载均衡APP Gateway

    Azure的SLB和ILB是最常用的4层负载均衡工具.但有些场景是7层的负载均衡,SLB和ILB就无能为力了. Azure上已经推出了APP Gateway的服务,就是7层负载均衡的负载均衡器. 如上 ...

  4. 在 Azure 上部署 Asp.NET Core Web App

    在云计算大行其道的时代,当你要部署一个网站时第一选择肯定是各式各样的云端服务.那么究竟使用什么样的云端服务才能够以最快捷的方式部署一个 ASP.NET Core的网站呢?Azure 的 Web App ...

  5. 【应用服务 App Service】发布到Azure上的应用显示时间不是本地时间的问题,修改应用服务的默认时区

    问题情形 应用程序发布到App Service后,时间显示不是北京时间,默认情况为UTC时间,比中国时间晚 8 个小时. 详细日志 无 问题原因 Azure 上所有的服务时间都采用了 UTC 时间. ...

  6. 【Azure 应用服务】使用PowerShell脚本上传文件至App Service目录  

    问题描述 使用PowerShell脚本上传文件至App Service目录的示例 脚本示例 对文件进行上传,使用的 WebClient.UploadFile 方法进行上传.当文件夹中包含子目录,执行以 ...

  7. Azure 上通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...

  8. 在Windows Azure上配置VM主备切换(1)——Linux篇

    对任何一个上线系统来说,高可用设计是不可或缺的一个环节,这样才可以确保应用可以持续.稳定的运行,而不是频繁的掉线.停机.高可用设计的核心思路很简单,就是消除一切单点故障,将单点链路或者节点升级为多点. ...

  9. 远程调试 Azure 上的 Website

    让我们先检查一下使用的 Azure SDK 版本和 Visual Studio 版本.根据MSDN的介绍,Azure 的远程调试功能是在 Azure SDK 2.2 中加入的,所以请确保您的机器上安装 ...

随机推荐

  1. 第四篇、linux系统文件属性三

    一.linux文件属性之文件权限体系介绍 二.linux中连接介绍 三.软连接 四.图解 五文件删除原理 主要内容

  2. windows7下手工搭建Apache2.2 php5.3 Mysql5.5开发环境

    Apache2.2(apache_2.2.2-win32-x86-no_ssl)php5.3.5(php-5.3.5-Win32-VC6-x86,请注意选择VC6版本,否则无法加载php5apache ...

  3. 克隆VMware虚拟机

    虚拟机使用过程需要用到多个进行实验.重新安装时间又太长,通过vmware虚拟机自带软件能够很好的快速克隆出完全相同的系统. 环境:关闭VMware,不要在开启状态哦~ 步骤: 选中需要被克隆的系统 菜 ...

  4. [转载]Runtime详解

      Runtime的特性主要是消息(方法)传递,如果消息(方法)在对象中找不到,就进行转发,具体怎么实现的呢.我们从下面几个方面探寻Runtime的实现机制. Runtime介绍 Runtime消息传 ...

  5. UI基础_transform

    #import "ViewController.h" typedef enum { ButtonTypeLeft = 1, ButtonTypeRight, ButtonTypeU ...

  6. shell中嵌套执行expect命令实例(利用expect实现自动登录)

    expect是 #!/bin/bashpasswd='123456'/usr/bin/expect <<EOFset time 30spawn ssh root@192.168.76.10 ...

  7. 30道linux运维面试题(很精典)

    https://zhangge.net/1986.html 1.linux 如何挂在 windows 下的共享目录         Shell   1 mount.cifs //192.168.1.3 ...

  8. nginx + tomcat多实例

      一.tomcat 配置多实例(修改两个端口:server端口,tomcat端口) 搭建之前,先确保已安装java和tomcat jdk安装:http://note.youdao.com/notes ...

  9. R语言:导入导出数据

    主要学习如何把几种常用的数据格式导入到R中进行处理,并简单介绍如何把R中的数据保存为R数据格式和csv文件. 1.保存和加载R的数据(与R.data的交互:save()函数和load()函数) a & ...

  10. ODPS中的TaskContext类里面的write函数

    ODPS中的TaskContext类有几个write函数 write(Record record)用来输出到默认输出表 write(Record record, String label)用来输出的l ...