2016年8月30日お客さんが仕立てた(多分)GMOのクラウドサーバーにはPlesk11が入っていた。そもそもPleskが何なのかよく分からないけど、なんかしらの管理ツールなのだろうか。このサーバーのとあるディレクトリでIPによるアクセス制限をかけたい、と言われたので真っ先に.htaccessを思いついた。192.168.1.1Apacheならこの記述を.htaccessに書くだけで192.168.1.1以外のアクセスを全て403で返してくれるのだけど、今回は勝手が違った。どんなIPで接続しても弾かれてしまうという恐ろしい現象に陥ってしまった。テストサーバーでは問題なくできたのに、おかしい...。試しに同じ.htaccess内にrewriteやbasic認証を書いてみた。サーバーの設定で.htaccessが使えない訳ではなさそうだ。AllにしててIP制限だけ使用できないとか、聞いたことがないけどもしかしたら限定的な機能の制限とかあるのかも...と思って調べてみた。そんな設定はなかった。htaccessで記述できる設定の内アクセス制限だけが何かしらの原因で今できていないらしい。すげー困って色々調べてみたところ、PleskにはApacheだけじゃなくてNginxというwebサーバーらしき物が入っている(?)らしい。nginxがリバースプロキシも何ちゃらで普通のIP制限(order,deny,allow)は効かないらしい。詳しく言うと、Plesk11の初期設定の状態だとNginxが起動していて、Apacheの方の設定は「Nginxに対しての応答をすべて通過させる」という設定になっているらしい。ApacheのwebサイトでIPアドレスによるアクセス制限を行う場合は.htaccessに下記の様に書くとバッチグーだそうな。env=denyIP</Files>キモは二つ。1行目で接続許可(/不可)するIPを書いてやること。(.*)>~</Files>で囲んでやること。env=denyIP↑の様に書いた場合、該当ディレクトリには効くがその下のファイルにはアクセスできてしまう、という現象が起こる。http://example.com/hoge/にアクセスした時は弾かれるのに、http://example.com/hoge/index.htmlにはアクセスできてしまうという余り意味をなさない設定になってしまう。(.*)>~</Files>で囲ってやる。env=denyIP</Files>の様に書いてやる。env=denyIP</Files>ちなみに「denyIP」「allowIP」となっている箇所は実は自由に変えられる。hogehogeでもACCESSとかでもなんでも大丈夫。本当にややこしくてかなわんです。今回は以下のサイトに助けられました。コメントをキャンセルメールアドレスが公開されることはありません。date*日本語が含まれない投稿は無視されますのでご注意ください。