delegated proxyサーバで1台のサーバに仮想サーバを複数立ち上げる方法
2018年12月25日Linux Tips, テクニカル, トピックス, ノウハウ
delegated proxyサーバを運用する場合、1台のサーバで複数サイトをどうやったら起ち上げられるのか悩んでしまう人が多いみたいなのでやり方をご紹介しようと思います。apacheサーバだと簡単に仮想サーバ作れるのですがdelegated proxyサーバだとあまり情報がネット上にも落ちていなく困ってしまうのでしょう。
下記のスクリプトは1台のサーバに複数の仮想サーバをdelegated proxyで起動したいケースのスクリプトです。delegatedでのやり方は複数あるのですが一番手間のかからないやり方は下記のポート番号を複数台でユニークに設定して割り付ける方法かと思います。内部サーバを予め起動して外部の接続を名前ベース(FQDNドメイン名)で振り分ける手法になります。nvhostは名前ベースの名称割付箇所で外部からのリクエストをproxyが名前で任意の内部サーバへ割り当てる基準とするオプションです。nvservは共通の IP アドレスを持つ内部サーバー郡のホスト名を検出し、 それらを仮想サーバーとして表す場合のオプションになります。nvservはIPベースでは同じサーバを指しても問題ないのですが、proxyが勘違いしないように名前で判別するためのものです。nvhostがフロントエンドでnvservが1IPの際のバックエンド名前割当と考えればわかりやすいかもしれません。
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash export SSL_CIPHER='HIGH:!DH:!3DES:!RC4:!SEED' /usr/sbin/delegated -P443 SERVER=https \ STLS='fcl,sslway -tls1 -tls1_1 -tls1_2 -no_ssl2 -no_ssl3 -cert /var/spool/delegate-nobody/lib/cat.pem' \ MOUNT="/* http://127.0.0.1:9001/* ,nvhost=extra.example.jp,nvserv=extra.example.jp" \ MOUNT="/* http://127.0.0.1:9002/* ,nvhost=space.housecom.jp,nvserv=space.housecom.jp" \ MOUNT="/* http://127.0.0.1:9003/* ,nvhost=www.housecom.jp,nvserv=www.housecom.jp" \ RELIABLE="*" REACHABLE="127.0.0.1" MOUNT="/favicon.ico=onerror" \ LOGDIR='/var/log/delegated/[date+/y%y/m%m/%d]' |
他にも内部サーバの1枚のNICに複数のIPアドレスを割り付けてやる方法もあります。この場合はMOUNT行を変更するだけで実現できます。nvservが不要です。
1 2 3 4 |
# ip addr add 203.11.101.120/8 brd 203.11.101.255 dev eth0 # ip addr add 203.11.101.121/8 brd 203.11.101.255 dev eth0 # ip addr add 203.11.101.122/8 brd 203.11.101.255 dev eth0 # ip addr show dev eth0 |
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash export SSL_CIPHER='HIGH:!DH:!3DES:!RC4:!SEED' /usr/sbin/delegated -P443 SERVER=https \ STLS='fcl,sslway -tls1 -tls1_1 -tls1_2 -no_ssl2 -no_ssl3 -cert /var/spool/delegate-nobody/lib/cat.pem' \ MOUNT="/* http://203.11.101.120/* ,nvhost=extra.example.jp" \ MOUNT="/* http://203.11.101.121/* ,nvhost=space.housecom.jp" \ MOUNT="/* http://203.11.101.122/* ,nvhost=www.housecom.jp" \ RELIABLE="*" REACHABLE="127.0.0.1" MOUNT="/favicon.ico=onerror" \ LOGDIR='/var/log/delegated/[date+/y%y/m%m/%d]' |