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

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

鈴木 宏康

鈴木 宏康

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