SSL終了/オフロードを実行するようにアプリケーションゲートウェイ(AG)を構成しました。 AGは、HTTPS接続をポート443でのみリッスンするように構成されています。 HTTPをHTTPSにリダイレクトすることは可能ですか?
AGのフラグ/機能を見落としていたと思います。
@ jonathan-masの回答を拡張するには、
これは、コマンドラインのみを使用して実行できます(2017年12月現在)。私はPowershellアプローチ(移植性に制限あり)を好みません。この質問への回答がより直接的であるため、 AZ CLI を好みます。
HTTPトラフィックのリスナーを作成します(例:FE-HTTP-80-Site
)。これは、AzureポータルまたはCLIを使用して実行できます。
HTTPSトラフィックのリスナーを作成します(例:FE-HTTPS-443-Site
)。これは、AzureポータルまたはCLIで実行できます。
リダイレクト構成を作成します。
az network application-gateway redirect-config create \ --gateway-name AppGateway \ -g RSgroupAppGateway \ -n Redirect-Site-toHTTPS \ --type Permanent \ --include-path true \ --include-query-string true \ --target-listener FE-HTTPS-443-Site
az network application-gateway rule create \ --gateway-name AppGateway \ -g RSgroupAppGateway \ -n Rule-HTTP-80-Site \ --rule-type Basic \ --http-listener FE-HTTP-80-Site \ --redirect-config Redirect-Site-toHTTPS
コンセプトに関するリファレンス: https://docs.Microsoft.com/en-us/Azure/application-gateway/application-gateway-configure-redirect-powershell
AZ CLIリファレンス: https://docs.Microsoft.com/en-us/cli/Azure/
これは、追加のツールやサービスなしでAzure Application Gateway製品によってサポートされるようになりました。 PowerShellを使用して このリンクで説明 として構成されています。
ポート80を443にリダイレクトするための参照から、関連するPoSHコードをコピーして貼り付けます。
# Get the application gateway
$gw = Get-AzureRmApplicationGateway -Name AdatumAppGateway -ResourceGroupName AdatumAppGatewayRG
# Get the existing HTTPS listener
$httpslistener = Get-AzureRmApplicationGatewayHttpListener -Name appgatewayhttplistener -ApplicationGateway $gw
# Get the existing front end IP configuration
$fipconfig = Get-AzureRmApplicationGatewayFrontendIPConfig -Name appgatewayfrontendip -ApplicationGateway $gw
# Add a new front end port to support HTTP traffic
Add-AzureRmApplicationGatewayFrontendPort -Name appGatewayFrontendPort2 -Port 80 -ApplicationGateway $gw
# Get the recently created port
$fp = Get-AzureRmApplicationGatewayFrontendPort -Name appGatewayFrontendPort2 -ApplicationGateway $gw
# Create a new HTTP listener using the port created earlier
Add-AzureRmApplicationGatewayHttpListener -Name appgatewayhttplistener2 -Protocol Http -FrontendPort $fp -FrontendIPConfiguration $fipconfig -ApplicationGateway $gw
# Get the new listener
$listener = Get-AzureRmApplicationGatewayHttpListener -Name appgatewayhttplistener2 -ApplicationGateway $gw
# Add a redirection configuration using a permanent redirect and targeting the existing listener
Add-AzureRmApplicationGatewayRedirectConfiguration -Name redirectHttptoHttps -RedirectType Permanent -TargetListener $httpslistener -IncludePath $true -IncludeQueryString $true -ApplicationGateway $gw
# Get the redirect configuration
$redirectconfig = Get-AzureRmApplicationGatewayRedirectConfiguration -Name redirectHttptoHttps -ApplicationGateway $gw
# Add a new rule to handle the redirect and use the new listener
Add-AzureRmApplicationGatewayRequestRoutingRule -Name rule02 -RuleType Basic -HttpListener $listener -RedirectConfiguration $redirectconfig -ApplicationGateway $gw
# Update the application gateway
Set-AzureRmApplicationGateway -ApplicationGateway $gw
バックエンドでリダイレクトを処理する場合、App Gatewayから送信されたX-Forwarded-Protoヘッダーを使用して、元のリクエストを確認し、リダイレクトルールを使用したHTTPでした。
Apacheでこれを行うには、。htaccessファイルに以下を追加します
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
IIS rewrite module を使用して、これをweb.configファイルに追加します
<rewrite xdt:Transform="Insert">
<rules>
<rule name="HTTPS rewrite behind App Gw rule" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions>
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{SERVER_NAME}{URL}" />
</rule>
</rules>
</rewrite>
確かにできますが、私の知る限りPowerShellを使用するだけです。 ARM=でこれを行うための手順は ドキュメント にあります。
私は通常、ここに指示を投稿しますが、これにはいくつかの手順が含まれます。これはモンスター投稿になります。
HTTPからHTTPSへのリダイレクトも、ポータルを介して構成できるようになりました。概念は同じです。httpのリスナーを作成してから、httpsリスナーにリダイレクトするルールを追加します。
https://docs.Microsoft.com/en-us/Azure/application-gateway/redirect-http-to-https-portal
IISに対するスコットの回答は、Win2k16\IIS10およびモジュール2.0では機能しませんでした。 AGプロキシがアップストリームサーバーエラーを返します。 IISマネージャー経由で書き換えモジュールをロードしようとすると、不正なXMLエラーが発生します。
挿入変換を削除し、リダイレクトが機能し始めました。
<rewrite>
<rules>
<rule name="HTTP To HTTPS Redirect Behind App Gtwy" stopProcessing="true">
<match url="^(.*)$" ignoreCase="false" />
<conditions logicalGrouping="MatchAny">
<add input="{HTTP_X_FORWARDED_PROTO}" pattern="^http$" ignoreCase="false" />
</conditions>
<action type="Redirect" url="https://{SERVER_NAME}{URL}" redirectType="Found" />
</rule>
</rules>
</rewrite>
以下のコマンドを使用してください、それはあなたのために動作します
$appgw = Get-AzureRmApplicationGateway -Name GatewayName -ResourceGroupName ResourcegroupName
$myHTTPSListener = Get-AzureRmApplicationGatewayHttpListener -Name appGatewayHttpListener -ApplicationGateway $appgw
$myHTTPListener = Get-AzureRmApplicationGatewayHttpListener -Name appGatewayHttpListener -ApplicationGateway $appgw
Add-AzureRmApplicationGatewayRedirectConfiguration -Name redirectHttptoHttps -RedirectType Permanent -TargetListener $myHTTPSListener -IncludePath $true -IncludeQueryString $true -ApplicationGateway $appgw
$redirectconfig = Get-AzureRmApplicationGatewayRedirectConfiguration -Name redirectHttptoHttps -ApplicationGateway $appgw
Add-AzureRmApplicationGatewayRequestRoutingRule -Name redirectrule -RuleType Basic -HttpListener $myHTTPListener -RedirectConfiguration $redirectconfig -ApplicationGateway $appgw
Set-AzureRmApplicationGateway -ApplicationGateway $appgw