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 *:80 mode http redirect location https://x.x.x.x frontend main *:8080 mode http default_backend static #--------------------------------------------------------------------- # static backend for serving up images, stylesheets and such #--------------------------------------------------------------------- backend static balance roundrobin server static 127.0.0.1:800 check
可以看到,haproxy監聽80和8080兩個埠。80埠的請求將直接轉發到app gateway的https,8080埠將轉發給800埠的Nginx服務。
四、Nignx配置
Nginx只需要把服務埠改為800即可。
五、測試
瀏覽器輸入APP Gateway的地址:
將會轉發到https: