1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Plesk + Nginx で Reload, Restart なしにIP制限を変更する

Last updated at Posted at 2020-07-03

(注意)本記事で書かれた対処法を行う場合には自己責任でお願いいたします。

課題

plex + nginx の運用で特定の IP アドレスを排除したい。

  • Plesk + Nginx の運用を行っていて、IP アドレスでのアクセス制限(アクセス拒否)を行いたいのだが、設定ファイルを変更して restart, reload は避けたい。
  • nginx からステータスコードとして 444 を返したい

対処法

当初は下記の geoモジュールを使った対処法 による対処を試みたがうまく行かなかった(後述)。

そこで参考文献にも載せた @semind さんの記事 に着想をえて、制限したい IP アドレスのファイルをあるディレクトリに配置して、その存在を確かめることで制限を行うことにした。

        if (-e /var/www/ip_blacklist/$remote_addr) {
                return 444;
        }

この設定を、通常 deny, allow ディレクティブを記述する場所などに書いておき、
/var/www/ip_blacklist/ いかに IP アドレス名 (xxx.xxx.xxx.xxx) の(空でよい)ファイルを置けば 444 を返すことができる。

注意事項

  • ファイルをうっかり消してしまうと制限が消えるのでバージョン管理しておくとよい
  • もしかすると、制限するIPの数を増やした場合、ファイルの数が多くなってパフォーマンスが落ちるかもしれない(相当多い場合は)。
  • 一つの IP に一つのファイルなので、IPの範囲を制限するなどには向かない(検討中、いいアイデアがあれば知りたいです)。

geo モジュールが使える場合

plesk + nginx ではディレクティブの拡張が http ディレクティブ直下にはないので、この方法は使えないようだが、IP + 変数のリストを外部ファイルに書きこんでおいて読み込むことができる(参考文献を参照)。

参考文献

後記

この記事は、自身の最初の投稿記事となるもの(2020/07/04 8:38現在)であり、記事の書き方などに問題があるかもしれないが、一回でも世の中の役に立つことがあればと願う。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?