share facebook facebook2 twitter menu hatena pocket slack

2013.03.13 WED

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

鈴木 宏康

WRITTEN BY鈴木 宏康

まず、二種類のユーザー(suzuki/suzuki2)を用意します。


# cat /etc/httpd/conf/suz-lab.htpasswd
suzuki:xxxxxxxx
suzuki2:yyyyyyyy

次に、二つのバーチャルホストに対して同じユーザーでのBasic認証をかけておきます。


# cat /etc/httpd/conf/httpd.conf
...
Listen 81
Listen 82
...

DocumentRoot /var/www/81

AuthUserFile /etc/httpd/conf/suz-lab.htpasswd
AuthName suz-lab
AuthType Basic
Require valid-user



DocumentRoot /var/www/82

AuthUserFile /etc/httpd/conf/suz-lab.htpasswd
AuthName suz-lab
AuthType Basic
Require valid-user


そして、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番ポートのバーチャルホストに振り分けられます。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。