poundで可能な事はHTTP通信の負荷分散だけではなく、SSLラッパとして稼働させることで、HTTPS通信を受け取りバックエンドのサーバにHTTP通信でリクエストを行うことも可能です。
下記の内容でpound自体の設定は完了していると仮定し話を進めます。
もし、未設定の場合には下記の記事を参考に設定してください。
GMOクラウド publicの設定 10日目
poundの準備が完了したら、証明書を準備します。
※作り方の詳細については、「自己(オレオレ)証明書の作成」の記事から証明書を作成して下さい。
必要なファイルが揃ったら下記の順番でファイルを1つにまとめます。
[shell]
cat server.crt server.key server.cer > server.pem
[/shell]
それぞれのファイルについては下記を参考にしてください。
- server.crt:発行されたサーバ証明書
- server.key:秘密鍵(パスワードを外した状態)
- server.cer:中間証明書
ファイルの準備が完了したら、稼働しているpoundの設定に下記の内容を追記します。
[shell]
ListenHTTPS
Address xxx.xxx.xxx.xxx
Port 443
xHTTP 0
Cert “/usr/local/cert/server.pem”
AddHeader “X-Forwarded-Proto: https”
AddHeader “X-Forwarded-By: SSL”
AddHeader “X-Forwarded-Host: SSL”
HeadRemove “X-Forwarded-Proto”
HeadRemove “X-Forwarded-By”
HeadRemove “X-Forwarded-Host”
#
# www.example.com
#
Service
HeadRequire “Host: .*www.example.com”
BackEnd
Address yyy.yyy.yyy.yyy
Port 80
Priority 2
End
End
End
[/shell]
ListenHTTPS > Address には、外部IPアドレスを設定します。
ListenHTTPS > Service > BackEnd > Address には、内部IPアドレス(WebサーバのIPアドレス)を設定します。
※BackEndが複数ある場合には、BackEnd部分を複数記述することで複数のサーバへ処理を分ける事が可能です。
注意点
気が付く方もいるかもしれませんが、poundとWebサーバ間はHTTPS通信ではなくHTTP通信となります。
一般的にPHPなどでは、HTTPS通信かを判別するために「Port番号」を利用している物もありますが、この場合には利用できません。
コメント
Pound の同一 Listeners 内で AddHeader は複数回使えないみたいです。