今までNAPT機能で複数サーバーの振り分けやってたけどそろそろ限界なのでリバースプロキシを使ってみる
今まで
インターネット port80は192.168.1.181へ + port81は192.168.1.182へ | port82は192.168.1.183へ +-------+------+ +------------------+ |WZR-HP-G300NH2| | ホスト1| | 192.168.1.1 | +-----------+ 192.168.1.181| +-------+------+ | |server1.nyaaz.info| | | +------------------+ +-------+------+ | +------------------+ | KVM | | | ホスト2| |192.168.1.180 +------+-----------+ 192.168.1.182| | | | |server2.nyaaz.info| +--------------+ | +------------------+ | +------------------+ | | ホスト3| +-----------+ 192.168.1.183| |server3.nyaaz.info| +------------------+
KVM(Proxmox)で仮想マシンを動かし、その中で3つのゲストを作成してそれぞれに192.168.1.181..3を割り当て
ルーターのNAPTを利用してserver1.nyaaz.info:80は192.168.1.181へ、server2.nyaaz.info:81は192.168.1.182へ飛ばすようにする。
構成はシンプルだけど一番致命的なのはポート80を1つのサーバーが占領してしまう点が最大の問題
リバースプロキシを使った場合
インターネット + | Poet80は192.168.1.185へ +-------+------+ +------------------+ |WZR-HP-G300NH2| | ホスト1| | 192.168.1.1 | +------+ 192.168.1.181| +-------+------+ | |server1.nyaaz.info| | | +------------------+ +-------+------+ +-------------+ | +------------------+ | KVM | | Nginx | | | ホスト2| |192.168.1.180 +---+192.168.1.185+-------------+ 192.168.1.182| | | | | | |server2.nyaaz.info| +--------------+ +-------------+ | +------------------+ | +------------------+ server1.nyaaz.infoなら192.168.1.181 | | ホスト3| server2.nyaaz.infoなら192.168.1.182 +------+ 192.168.1.183| server3.nyaaz.infoなら192.168.1.183 |server3.nyaaz.info| +------------------+
リバースプロキシとしてNginxを利用する(現在1.2.1利用)ルーターの設定を変え、ポート80番のアクセスをすべて192.168.1.185へ送る。NginxはアクセスされたドメインごとにIPを振り分ける
手順
子サーバー1~3はすでに導入済みだとする。あくまでリバースプロキシの部分だけ
nginxのインストール
割愛するからここ見る
設定
/etc/nginx/sites-available/defaultに以下のように
server { listen 80; server_name server1.nyaaz.info; location / { proxy_pass http://192.168.1.181; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; #proxy_redirect default;# for SSL? #for Websocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } server { listen 80; server_name server2.nyaaz.info; location / { proxy_pass http://192.168.1.182; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; #proxy_redirect default;# for SSL? #for Websocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } server { listen 80; server_name server3.nyaaz.info; location / { proxy_pass http://192.168.1.183; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $http_host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_max_temp_file_size 0; #proxy_redirect default;# for SSL? #for Websocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } }
確認済みなこと
- wordpress
- sinatraApp