2013年3月11日月曜日

HAProxyでBasic認証のユーザー別にバックエンドサーバを振り分ける

スズキです。

あまり使うことは無いような気がしますが...

まずは二種類のユーザー(suzuki/suzuki2)を用意します。
# cat /etc/httpd/conf/suz-lab.htpasswd
suzuki:xxxxxxxx
suzuki2:yyyyyyyy

次に二つのバーチャルホストに対して同じユーザーでのBasic認証をかけておきます。
# cat /etc/httpd/conf/httpd.conf
...
Listen 81
Listen 82
...
<VirtualHost *:81>
    DocumentRoot /var/www/81
    <Directory "/var/www/81">
        AuthUserFile /etc/httpd/conf/suz-lab.htpasswd
        AuthName     suz-lab
        AuthType     Basic
        Require      valid-user
    </Directory>
</VirtualHost>
<VirtualHost *:82>
    DocumentRoot /var/www/82
    <Directory "/var/www/82">
        AuthUserFile /etc/httpd/conf/suz-lab.htpasswd
        AuthName     suz-lab
        AuthType     Basic
        Require      valid-user
    </Directory>
</VirtualHost>

そして、HAProxyを下記のように設定します。
# cat /etc/haproxy/haproxy.cfg
...
userlist suz-lab
    user suzuki insecure-password suzuki!23

frontend proxy
    bind 0.0.0.0:80
    acl auth_ok http_auth(suz-lab)
    use_backend     local81  if auth_ok
    default_backend local82

backend local81
    balance leastconn
    server  local81 localhost:81 check port 81

backend local82
    balance leastconn
    server  local82 localhost:82 check port 82
これはユーザーが"suzuki"の場合、81番ポートのバーチャルホストに振り分けられ、
それ以外(suzuki2)の場合、82番ポートのバーチャルホストに振り分けられます。

いつか、どこかで、使えるか?
--------
http://www.suz-lab.com

0 コメント: