こんにちは、岡本です。
lighttpdでSSL・リバースプロキシを立ててみました。
最近ではSSL証明書も安価になりましたが、複数のサイトを運営する場合、個別にSSLを取得するとお金も設定にかかる人件費も馬鹿になりません。
そこで、リバースプロキシを導入しSSLの処理を一つのサーバに集約する構成を作りました。
※注意:SSL認証局によっては、このような利用が禁止されている場合があります。
契約内容を確認の上、ご検討ください。
接続イメージは以下のような感じです。
SSL証明書はexample.comの分だけ取得すればOKです。
※SSLの時だけドメインが変わってしまいますが…
■今回の設定(追記してください!)
●SSL証明書の取得
今回は省略。
@ITの記事を参考にテスト用のSSL証明書を作成しました。
Webサーバ「lighttpd」でSSLを使うには
●クライアントパソコン(Windows XPの場合)
C:\WINDOWS\system32\drivers\etc
192.168.1.157 example.com
192.168.1.157 1.example.com
192.168.1.157 2.example.com
192.168.1.157 3.example.com
●lighttpd
/etc/lighttpd/lighttpd.conf
$SERVER["socket"] == "xxx.xxx.xxx.xxx:443" {
ssl.engine = "enable"
ssl.pemfile = "/etc/lighttpd/ssl/server.pem"
url.rewrite-once = ( "^/([^//]+)/(.+)" => "http://$1.example.com/$2")
}
proxy.server = (
"" =>
( (
"host" => "xxx.xxx.xxx.xxx",
"port" => "81"
) ),
)
SSLの時だけmod_rewriteでアクセス先のURLを書き換えています。
ウェブサーバに接続するときも、書き換えたURLでアクセスが行われます。
●Apache
/etc/httpd/conf/httpd.conf
Listen 81
NameVirtualHost *:81
<VirtualHost *:81>
ServerName example.com
DocumentRoot /data/example
</VirtualHost>
<VirtualHost *:81>
ServerName 1.example.com
DocumentRoot /data/example_1
</VirtualHost>
<VirtualHost *:81>
ServerName 2.example.com
DocumentRoot /data/example_2
</VirtualHost>
<VirtualHost *:81>
ServerName 3.example.com
DocumentRoot /data/example_3
</VirtualHost>
ブラウザからウェブサーバへの通信ポートである80番ポートはリバースプロキシが使うため、Apacheは別のポートを使ってリバースプロキシからの通信を待つことにします。