今頃気がついた、Nginxの設定の書き方…

Apacheから離れ、Webサーバーの構築はほとんどIISかNginxのみになった猫ですが、最近(というか今日)、Nginxの書き方で、これが出来るのかーというのを発見。

とあるディレクトリは、ある一定のIPしか使えないと言うことにしておく。ただ、location においてパターンマッチなどを利用しない場合は、こいつらの優先度が低い。そのため、~* \.php$ などがいらっしゃり、そのフォルダにPHPがあると、そのパターンを無視されてしまう。だからといって、そのIP制御しているlocation をパターンマッチにしてしまうと、こんどはPHPの構文が無効になり、デフォルトのMIMEタイプで返されてしまう。

location /test/ {
    allow 127.0.0.1;
    deny all;
}

location ~* \.php$ {
    fastcgi_pass unix:/var/run/php-fpm.sock;
    ...
}

パターンとしてはこんな感じだろう。つまり、この状況だと /test/ に test.php がある場合、denyの効果が全くなくなると言うこと。対策として /test/ をパターンマッチにすると、こんどはPHPを識別しないので、PHPがコンテンツファイルとして認識されてしまうと言う。かなしい。

location /test/ {
    allow 127.0.0.1;
    deny all;
    location ~* \.php$ {
        fastcgi_pass unix:/var/run/php-fpm.sock;
        ....
    }
}

location内部にlocationが書けるということに気がついた。それ以外の方法は、プロキシーを使ってもう一つ立てると言うこともやっていたのだが、プロセスが増えてしまうのであまり嫌だなと思ってたのだ。これならば、とあるフォルダはfastcgiやプロキシーのキャッシュを他の所違うような設定なども出来るかもとおもってる。特にワードプレスのfastcgiキャッシュ設定だと、if構文ばかりになって面倒で見苦しい。特に、wp-admin/ などはキャッシュされると困る分けなのだが、変数を使って変なことをするよりはこちらの方が楽なのではと思ったり。

それにしても、いつからあるんだろうか…(元からあったりして…)

飛竜猫
  • 飛竜猫
  • 飛竜猫と書いて「とりゅねこ」という、三重県四日市市在住で名古屋へ勤務してるプログラマー兼ネットワークエンジニア。プログラム言語は、C#言語とPHPがお気に入り。サーバー構築はRHEL系のNginxがお気に入り。新しいことを始めることが好きだけど、最近は早すぎて追いつかないよ!

    アニメ視聴にスクーターでぼっちツーリングしたり、電車や鉄塔見に行ったりと自由奔放な趣味で、IT関係の趣味は、自作パソ構築したり動画編集してみたりと...いろいろチャレンジしてます。

    さすがに、新しいことのチャレンジは、年齢的に厳しくなってきたような気がする...

    どちらかというと理数系なため、文章書いたりするのはかなり苦手です

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です