virtual hostを用いた、なんちゃら+常時SSL

前項で書いた、「静的サイト」について、
社内で、容量が少なく内部処理も発生しないようなindex.html一つに、インスタンスを1つ割り当てているのですが、まあ予算の無駄ですね。

という事で、1インスタンス内に2ドメインを持たせて、インスタンスの数を減らせないか検討した結果、ヴァーチャルホストにたどり着きました。

参考:
ApacheのVirtualHostってなんだ
https://qiita.com/MonaOka/items/b5f589e59ee002a1d355

[Sy] Amazon Linux + Apache2.4系 でのバーチャルホストの設定方法
https://utano.jp/entry/2016/10/amazon-linux-apache-24-virtualhost/

/etc/httpd/conf.dの中に、なんちゃら.confというファイルを生み出し、その中に使うドメインの情報を記載するとよいとのこと。
とりあえず以下のようにやってみた。

<VirtualHost *:80>
  ServerName http://hayama-cloudservertest.com
  DocumentRoot /var/www/html
 ServerAlias www1.hayama-cloudservertest.com www2.hayama-cloudservertest.com 
  <Directory "/var/www/html">
      Options Indexes FollowSymlinks
      AllowOverride All
      Require all granted
  </Directory>
</VirtualHost>

<VirtualHost *:80>
      ServerName www.hayama-cloudservertest.com
      DocumentRoot /var/www/html/
      AllowEncodedSlashes On
  <Directory /var/www/html>
      SetEnv HTTP_X_FORWARDED_PROTO http
      SetEnv REAL_HOST_NAME www.hayama-cloudservertest.com
      AllowOverride All
      Require all granted
  </Directory>
</VirtualHost>

ちなみに、ドキュメントルートをもう一つ用意(/var/www/test/)して、そこに適当なHTMLファイルをいれ、別の.confをつくってやってみたところ、成功した。
これで、少しは予算を削れそうですな。

追記(R1/08/01/Jupiter…Thursday?)

https://aws.amazon.com/jp/premiumsupport/knowledge-center/redirect-http-https-elb/

AWSの質問欄?を参考に、上記HTMLを疑似的に常時SSL化してみた。

<VirtualHost *:80>
ServerName test.hayama-cloudservertest.com
DocumentRoot /var/www/test

<Directory "/var/www/test">
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

ここに、以下を追加した。

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

結果こんな表記に

 <VirtualHost *:80>
ServerName test.hayama-cloudservertest.com
DocumentRoot /var/www/test

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

<Directory "/var/www/test">
Options Indexes FollowSymlinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>

ChromeとIE11では上手くいったが、Edgeでは一度F5で更新しないとSSLに跳ばないといった現象が起きた。
何が原因だろうか。

あと、一応こんなHPも見つけたのでメモ。
(使わなかったけど)
https://qiita.com/mana13u/items/bd7d253a2b99d5e405b0