pound で SSL ラッピング+負荷分散

mod_ssl を使うと apache がメモリと CPU を食いまくり、非常に効率が悪いので、pound を使って SSL ラッピングしてみます。ついでに負荷分散もできて一石二鳥です。

/etc/apache2/ports.conf の編集

  • Listen 80 -> Listen 8080

/etc/site-available/example の作成

NameVirtualHost *:8080

<VirtualHost *:8080>
    ServerName example.com
    DocumentRoot /somewhere/example.com
    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride FileInfo
    </Directory>
</VirtualHost>

<VirtualHost *:8080>
    ServerName example.net
    DocumentRoot /somewhere/example.net
    <Directory />
        Options Indexes FollowSymLinks
        AllowOverride FileInfo
    </Directory>
</VirtualHost>

apache の再起動

再起動が終わったら 8080 番でアクセスできるか確認します。

$ sudo /etc/init.d/apache2 restart

オレオレ証明書の作成

$ sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

pound のインストール

$ sudo apt-get install pound

/etc/default/pound の編集

  • 「startup=1」に変更する

/etc/pound/pound.cfg の編集

## Minimal sample pound.cfg
##
## see pound(8) for details


######################################################################
## global options:

User      "www-data"
Group     "www-data"
#RootJail       "/chroot/pound"

## Logging: (goes to syslog by default)
##      0       no logging
##      1       normal
##      2       extended
##      3       Apache-style (common log format)
LogLevel  0

## check backend every X secs:
Alive     30

## use hardware-accelleration card supported by openssl(1):
#SSLEngine      "<hw>"


######################################################################
## listen, redirect and ... to:

## redirect all requests on port 8080 ("ListenHTTP") to the local webserver (see "Service" below):
ListenHTTP
  Address 192.168.xxx.xxx
  Port    80

  ## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
  xHTTP     0

  Service
    BackEnd
      Address 127.0.0.1
      Port    8080
    End
  End
End

ListenHTTPS
  Address 192.168.xxx.xxx
  Port    443
  Cert    "/etc/apache2/ssl/apache.pem"

  ## allow PUT and DELETE also (by default only GET, POST and HEAD)?:
  xHTTP     0

  Service
    BackEnd
      Address 127.0.0.1
      Port    8080
    End
  End
End

pound の起動

http(80番)と https(443番)のアクセスができることを確認します。

$ sudo /etc/init.d/pound start