トピックス
トピックス

2017.06.23

NginxとELBの連携

AWSでACMという無料のSSL証明書サービスがあります。
 
これを利用することで、インターネットの通信を暗号化することが出来るのですが、
ACMはELB等のAWSのサービスと連携させる必要があります。
 
これを普通に設定しただけではELBのHealthCheckに失敗してしまうので、
ちょっとした、こつが必要でした。
 
まず、ELBのアクセスを二つに分けます。
 
443:httpsでアクセスされてきた場合は、ACMで発行した証明書を使って暗号化し、
ELBからEC2への通信は80:httpにします。
 
80:httpでアクセスされてきた場合は、ELBからEC2への通信は81に変更します。
 
この後、Nginxの設定で81へのアクセスは特定のディレクトリを除いて、443:httpsに変更してアクセスし直します。
 
これで、80:httpからアクセスされても自動的に443:httpsで暗号化してアクセスさせることができます。
 
これだけでやりたいこととしては大丈夫なのですが、このままですと、ELBのHealthCheckで80のチェックをしたときに、
443:httpsにリダイレクトされるために失敗してしまいます。
 
そのため、特定のディレクトリ(今回は/healthckech/)にアクセスした場合はそのままのアクセスで残す設定を追加する必要があります(図の赤字)。
 
これで、自動的に暗号化ができ、HealthCheckも失敗しない設定の完成です。
トップへトップへ