困った出来事
Webサイト改修案件のリリース時に、移行中は特定のIPアクセス以外はメンテナンスページにリダイレクトするようにした。
.htaccess
<IfModule mod_rewrite.c>
ErrorDocument 503 /maintenance.html
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/maintenance.html$
RewriteCond %{REMOTE_ADDR} !=10.1.1.101 #自分のIPアドレス
RewriteRule ^.*$ - [R=503,L]
</IfModule>
一応うまくIPアドレスの制御ができてるか確認するために、Docker上の開発環境で試してみたところ、
自分自身もメンテナンスページにリダイレクトしてしまうんだが…?
となり詰まった上解決方法が調べても出てこなかったので、ここに記しておく。
解決法
結論を先に書くと、DockerではクローバルIPアドレスではなく、GateWayのIPアドレスを指定する必要があるらしい。
私みたいに見様見真似でDockerを導入してみた人間には、「GateWayって…どこみればわかるん???」となるので、以下にその確認方法も載せておく。
何も指定しなければ172.19.0.1になるっぽい。
調べ方
対象コンテナのネットワーク名を調べる
.cmd
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
4a07eb4edc93 bridge bridge local
b67bed0ffcf0 sample_default bridge local
a74e1b333434 host host local
76b4e13bf0cd none null local
とくにネットワーク名を指定していない時はコンテナ名_defaultになる模様。
今回はsample_defaultが対象のネットワークとして進める。
ちなみにネットワーク名などを変えたい時は以下の記事が参考になるかと。
ネットワークの詳細情報を確認する
.cmd
$ docker network inspect sample_default
[
{
"Name": “sample_default",
"Id": "b67bed0ffcf092524d1758bb488410cd0ae2a4f41febd72d76aed9221f686",
"Created": "2022-01-05T05:03:06.319979838Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.19.0.0/16",
"Gateway": "172.19.0.1" ←これ
}
]
},
--------------中略--------------------------------
}
]
この中の"Gateway":
にあたる部分がそれ。