🌐

リバース プロキシーの学習メモ - 名前解決込み

2025/01/13に公開

この記事について

リバース プロキシーの学習メモ」の続きです。

簡易 DNS サーバーを作成したので、リバースプロキシーの設定を IP アドレスから名前に変更したときの作業メモです。

行いたいこと

  • http://node1.example.jp で node2 のページを表示する
  • http://node1.example.jp/node3/ で node3 のページを表示する
  • http://node1.example.jp/node4/ で node4 のページを表示する

node1 の DNS 設定の変更

簡易 DNS サーバーを参照する DNS サーバーの一覧に追加します。

変更前の状態

使用しているネットワークデバイスを確認します。eth0 は Vagrant がデフォルトで作成したもの、eth1 が今回の検証用に作成したものです。

[y_mrok@node1 ~]$ nmcli device status
DEVICE  TYPE      STATE                   CONNECTION
eth0    ethernet  connected               eth0
eth1    ethernet  connected               System eth1
lo      loopback  connected (externally)  lo
[y_mrok@node1 ~]$

Vagrant で仮想マシンを作成したときに作成された Vagrant 側( eth0 )にだけ DNS の設定が入っています。

/etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.1.1 node1.example.jp node1
/etc/resolv.conf
# Generated by NetworkManager
search localdomain example.jp
nameserver 10.0.2.3
/etc/sysconfig/network-scripts/ifcfg-eth1
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.100.101
NETMASK=255.255.255.0
DEVICE=eth1
PEERDNS=no
#VAGRANT-END
[y_mrok@node1 ~]$ nmcli device show
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:0D:F5:F0
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eth0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         10.0.2.15/24
IP4.GATEWAY:                            10.0.2.2
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 10.0.2.2, mt = 100
IP4.ROUTE[2]:                           dst = 10.0.2.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]:                             10.0.2.3
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         fd00::a00:27ff:fe0d:f5f0/64
IP6.ADDRESS[2]:                         fe80::a00:27ff:fe0d:f5f0/64
IP6.GATEWAY:                            fe80::2
IP6.ROUTE[1]:                           dst = fd00::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = fe80::/64, nh = ::, mt = 1024
IP6.ROUTE[3]:                           dst = ::/0, nh = fe80::2, mt = 100

GENERAL.DEVICE:                         eth1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:FB:2B:CB
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     System eth1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.100.101/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 101
IP6.ADDRESS[1]:                         fe80::a00:27ff:fefb:2bcb/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          100 (connected (externally))
GENERAL.CONNECTION:                     lo
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = ::1/128, nh = ::, mt = 256
[y_mrok@node1 ~]$

変更

eth1 側が簡易 DNS サーバーを参照するよう構成します。

sudo nmcli connection modify 'System eth1' ipv4.dns 192.168.100.201
sudo systemctl restart NetworkManager

変更後の状態

eth1 側に簡易 DNS サーバーを参照する設定が追加されました。

/etc/resolv.conf
# Generated by NetworkManager
search localdomain example.jp
nameserver 10.0.2.3
nameserver 192.168.100.201
/etc/sysconfig/network-scripts/ifcfg-eth1
#VAGRANT-BEGIN
# The contents below are automatically generated by Vagrant. Do not modify.
NM_CONTROLLED=yes
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.100.101
NETMASK=255.255.255.0
DEVICE=eth1
PEERDNS=no
#VAGRANT-END
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
PREFIX=24
DNS1=192.168.100.201
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="System eth1"
UUID=9c92fad9-6ecb-3e6c-eb4d-8a47c6f50c04
[y_mrok@node1 ~]$ nmcli device show
GENERAL.DEVICE:                         eth0
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:0D:F5:F0
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eth0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/2
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         10.0.2.15/24
IP4.GATEWAY:                            10.0.2.2
IP4.ROUTE[1]:                           dst = 0.0.0.0/0, nh = 10.0.2.2, mt = 100
IP4.ROUTE[2]:                           dst = 10.0.2.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]:                             10.0.2.3
IP4.DOMAIN[1]:                          localdomain
IP6.ADDRESS[1]:                         fd00::a00:27ff:fe0d:f5f0/64
IP6.ADDRESS[2]:                         fe80::a00:27ff:fe0d:f5f0/64
IP6.GATEWAY:                            fe80::2
IP6.ROUTE[1]:                           dst = fd00::/64, nh = ::, mt = 100
IP6.ROUTE[2]:                           dst = fe80::/64, nh = ::, mt = 1024
IP6.ROUTE[3]:                           dst = ::/0, nh = fe80::2, mt = 100

GENERAL.DEVICE:                         eth1
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:FB:2B:CB
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     System eth1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.100.101/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.100.0/24, nh = 0.0.0.0, mt = 101
IP4.DNS[1]:                             192.168.100.201
IP6.ADDRESS[1]:                         fe80::a00:27ff:fefb:2bcb/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 256

GENERAL.DEVICE:                         lo
GENERAL.TYPE:                           loopback
GENERAL.HWADDR:                         00:00:00:00:00:00
GENERAL.MTU:                            65536
GENERAL.STATE:                          100 (connected (externally))
GENERAL.CONNECTION:                     lo
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/1
IP4.ADDRESS[1]:                         127.0.0.1/8
IP4.GATEWAY:                            --
IP6.ADDRESS[1]:                         ::1/128
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = ::1/128, nh = ::, mt = 256
[y_mrok@node1 ~]$

リバース プロキシーの設定変更

default.conf ファイルの変更

/etc/nginx/conf.d/default.conf の内容を書き換えます(変更前の状態はこちらを参照ください)。変更前後がわかるように、変更前はコメント化しています。

/etc/nginx/conf.d/default.conf
server {
    listen       80;
#    server_name  localhost;
    server_name  node1.example.jp;

    #access_log  /var/log/nginx/host.access.log  main;

#    location / {
#        root   /usr/share/nginx/html;
#        index  index.html index.htm;
#    }

    location / {
 #       proxy_pass http://192.168.100.102:80/;
        proxy_pass http://node2.example.jp:80/;
    }

    location /node3/ {
#        proxy_pass http://192.168.100.103:80/;
        proxy_pass http://node3.example.jp:80/;
    }

    location /node4/ {
#        proxy_pass http://192.168.100.104:80/;
        proxy_pass http://node4.example.jp:80/;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

変更内容の反映

sudo systemctl restart nginx.service

クライアント PC からの表示テスト

名前でも正しく表示できました。

http://node1.example.jp/

f2025-01-13_14h46_47ig2

http://node1.example.jp/node3/

2025-01-13_14h47_05

http://node1.example.jp/node4/

2025-01-13_14h47_20

Discussion