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 フィルタリングをしたい。

やり方

  1. ホストに設定ファイルを用意する
  2. https-portal の volume を設定する
  3. 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