🌐
リバース プロキシーの学習メモ - 名前解決込み
この記事について
「リバース プロキシーの学習メモ」の続きです。
簡易 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/
■ http://node1.example.jp/node3/
■ http://node1.example.jp/node4/
Discussion