WordPress, AWS

AWS ALB配下のApache HTTPS設定

 

要件

  • ALBにAWS ACMにてサーバ証明書を設定、443で待ちうける
  • ALB配下のWEBサーバは80番で待ちうける
  • X-Forwarded-Portが443でなければ
    mod_rewriteで443のhttps://www.example.netリダイレクトを行う
  • http://example.netにアクセスがあった場合は、https://www.example.netにリダイレクトさせたい

標準的な要件です。

 

動作フロー

  • ユーザ(443) → ALB(443) → WEB(80)
  • ユーザ(80) → ALB(80) → WEB(80) → ALB(443)
    ALB(443)でないことをWEB(80)が”X-Forwarded-Port”で判定して、443でなければALB(443)にリダイレクトを行う

 

 

Apacheの設定

# vi /etc/httpd/conf.d/www.example.net.conf


<VirtualHost *:80>

  DocumentRoot /var/www/vhosts/www.example.net/httpdocs
  ServerName www.example.net
  ServerAlias example.net
  ErrorLog logs/www.example.net-error.log
  CustomLog logs/www.example.net-access.log elb-customlog env=!nolog

  ## ALB対策
  <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Port} !^443$
    RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
    RewriteRule ^(.*)?$ https://www.example.net$1 [R=301,L]
  </IfModule>

  <Directory "/var/www/vhosts/www.example.net/httpdocs">
    # 2.2系
    #AllowOverride All
    #Order allow,deny
    #Allow from all

    # 2.4系対策
    AllowOverride All
    Require all granted
  </Directory>

</VirtualHost>

 

※AWS公式の推奨設定

<VirtualHost *:80>

・・・

  RewriteEngine On
  RewriteCond %{HTTP:X-Forwarded-Proto} =http
  RewriteRule .* https://%{HTTP:Host}%{REQUEST_URI} [L,R=permanent]

・・・
</VirtualHost>

上記を入れるのが推奨みたいですね。

 

 

 

構文確認を行った上で反映を行う

# httpd -t
# systemctl reload httpd

 

 

WordPressの場合はもう一手間必要

 

wp-config.php

※下記を追加する

# AWS ELB(ALB) リダイレクトループ対策
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
    $_SERVER['HTTPS']='on';
}

 

 

 

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)