[Nginx]リバースプロキシを使用し 同一IP・複数サーバー・複数ドメインでの構築

同一IP・複数サーバー・複数ドメインでの構築を行っていた際の記録を記述いたします。
・Nginxのリバースプロキシを使用します。
うちの自宅LAN環境は下記のような構成です。

メイン回線はドコモ光の「GMOとくとくBB」を使用しており、
PPPoEルータにはインターリンクの固定IPサービスを使用しております。↓

初回2か月は無料で試せてそのまま使う場合でも1つのIPなら月1200円と安いのでお勧めです。

問題は、PPPoEルータにポートフォワーディング設定で
ポート=80番と443番を「Pi 3 B+」に割り振ってしまうと「Pi 4 B」のポート開放を行っていた場合でも
同一のIPに設定したドメインへの通信がこのブログになってしまい「Pi 4 B」に建てたWordPressに飛ばないのです。

そこで、特定のドメイン名でアクセスが飛んできた際に同LAN内に存在する別サーバーに処理を投げてあげるようにすればいいので
どのドメインでアクセスしようがIPは同じなのでベースとなる「Pi 3 B+」へとアクセスされます。
そこでNginxリバースプロキシを使用します。

cd /etc/nginx/conf.d
ラズパイ3@raspberrypi:/etc/nginx/conf.d $ ls
enable-ax.conf  server.conf

「enable-ax.conf」このファイルはこのサイトの設定ファイルです
「server.conf」このファイルを今から作成していただきます。
※追記(2020/12/23)
[client_max_body_size 〇〇M;]
この設定を行わないと別サーバーでwordpressを立てた際に、
別サーバー側のNginxで[client_max_body_size 256M;]と設定した場合でも
アップロード可能サイズが「1MB」になってしまうので注意が必要です。

ラズパイ3@raspberrypi:sudo nano server.conf
server{
    client_max_body_size 256M; #ここでアップロード上限を設定しないと別サーバー側は1MBの上限になってしまう
    listen 80;
    server_name enable-ax.com; #ドメイン名
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location / {
        proxy_pass http://192.168.XXX.XXX/; #上記サーバーネームに設定したサイトが置いてある同LAN内のIP
    }
}
server{
    client_max_body_size 256M; #ここでアップロード上限を設定しないと別サーバー側は1MBの上限になってしまう
    listen 443;
    server_name enable-ax.com; #ドメイン名
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    location / {
        proxy_pass https://192.168.XXX.XXX/; #上記サーバーネームに設定したサイトが置いてある同LAN内のIP
    }
}

上記設定ファイルを作成後、

sudo nginx -t
sudo nginx -s reload
sudo systemctl restart nginx

で、Nginxを再起動し指定したドメインにアクセスしてみてください。
同じIPをDNSレコードに設定していても設定されたドメインのみは別サーバ(うちでは「Pi 4 B」)へとアクセスするようになっているはずです。

・最後に
たったこんなファイルを置くだけなのに2日ほど調べたのでメモ代わりとしても公開しておきます。
「/etc/nginx/sites-enabled/」に設定ファイルを置くとかいろいろやりましたができず、
上記の方法がわかりやすくて速かったです。

コメント

タイトルとURLをコピーしました