今まで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