https-portalで外部ファイルを用いてIPフィルタリングする
公開日:
やりたいこと
# アクセスを許可するIP
allow XXX.XXX.XXX.XXX;
allow XXX.XXX.XXX.XXX;
allow XXX.XXX.XXX.XXX;
allow XXX.XXX.XXX.XXX;
# それ以外は拒否
deny all;
このような設定ファイルを用意して https-portal
で IP フィルタリングをしたい。
やり方
- ホストに設定ファイルを用意する
- https-portal の volume を設定する
- https-portal の環境変数を設定し、nginx の設定ファイルに外部ファイルを読み込む
1.ホストに設定ファイルを用意する
コンテナを動かしているホストに IP フィルタリング用の設定ファイルを用意する。
今回の例では、ホストの /etc/nginx
ディレクトリ下に nginx-ip-restrictions.conf
というファイルを用意しました。配置するディレクトリはどこでも構いませんが、nginx
の設定ファイルのルールとしてファイル名は*.conf
の形である必要があります。
以下がファイルの例です。
/etc/nginx/nginx-ip-restrictions.conf
# アクセスを許可するIP
allow XXX.XXX.XXX.XXX;
allow XXX.XXX.XXX.XXX;
allow XXX.XXX.XXX.XXX;
allow XXX.XXX.XXX.XXX;
# それ以外は拒否
deny all;
2.https-portal の volume を設定する
ホスト側の設定ファイルを nginx
の設定で読み込むために、docker compose
の volume を設定します。
volumes:
- /etc/nginx/nginx-ip-restrictions.conf:/etc/nginx/nginx-ip-restrictions.conf
3.https-portal の環境変数を設定し、nginx の設定ファイルに外部ファイルを読み込む
https://github.com/SteveLTN/https-portal#advanced-usage
公式ドキュメントにもありますが、https-portal は環境変数を設定することで nginx の設定を追加することができます。この機能を利用して、先ほど作成した設定ファイルを読み込みます。
今回の設定するのはCUSTOM_NGINX_GLOBAL_HTTP_CONFIG_BLOCK
という環境変数で、nginx の http モジュールの部分
http {
この部分
}
の設定を追加することができます。以下の環境変数を追加してください。
CUSTOM_NGINX_GLOBAL_HTTP_CONFIG_BLOCK: include /etc/nginx/nginx-ip-restrictions.conf;
以上です。
まとめ
以上です。公式のドキュメントに書いてあることの応用ですが、実装するのに少し手間取ったので tips として記事に残します。
では
Bye