ガジェット通信

見たことのないものを見に行こう

NginxでBasic認証をかける設定方法とlocationディレクティブの書き方について

DATE:
  • ガジェット通信を≫

こんにちは。づやです。
最近Nginxの設定ファイルをいじることが多くなってきたので、よく使う内容を備忘録としてまとめたいと思います。
※Nginx + PHP-FPMでの設定のお話しになります。

Basic認証をかける

Apacheと同様の.htpasswdファイルを用意する必要があります。
htpasswdコマンドで用意するか、2015年現在においては生成できるサイトさんがたくさんありますので、そういったサイトで用意してもよいかと思います。

Apacheが入ってないサーバの場合、htpasswdコマンドが利用できないのでyumなどでhttpd-toolsをインストールします。

あとはApache同様にパスをかけたい場所を設定ファイルに記載します。

location / {
auth_basic "Basic Auth"; #画面に表示する文字
auth_basic_user_file /var/www/.htpasswd; #.htpasswdの位置を指定
}

locationのマッチに関して

避けては通れないlocationディレクティブの書き方です。

正規表現が使えたり、省略できたりと割と柔軟に記載が可能です。

# /sampleに前方一致でマッチさせる
location /sample {

}

こんな感じでなにも指定せずに書けますが、下記のような種類の指定が可能です。

= 完全一致
^~ 前方一致
~ 正規表現(大文字と小文字が区別されます)
~* 正規表現2(大文字と小文字が区別されません。修飾子「i」をつけたときの状態)

指定しない場合と前方一致では同じ挙動のように思いますが、実はそれぞれ優先順位があります。

完全一致(=) > 前方一致(^~) > 正規表現(~) > 正規表現2(~*) > 指定なし

つまり下記のように両方に一致した場合、前方一致のほうが優先され、なんらかの処理2がおこなわれます。

location /sample {
# なんらかの処理
}

location ^~ /sample {
# なんらかの処理2
}

例えば同じ条件で複数ヒットする場合は、記載した順番が上の方が優先されるようです。
ただし検索方法が前方一致の場合は検索文字列の長い方らしいです。。。

ややこしいですね。
いまだに綺麗に見やすく書く方法がわかりませんが、検索方法が同じもの同士でまとめて書くくらいはしておかないと後でわけがわからなくなるので要注意です。

gzip圧縮を有効にする

gzip圧縮を有効にするのは簡単です。

gzip on

行いたいserverディレクティブの中で上記を書くだけです。
ただ、デフォルトだとコンテントタイプがtext/htmlしか対象にしてくれません。ですから、gzip_typesを指定して対象を増やして利用します。

gzip on
gzip_types text/css text/xml text/javascript;

他にもいろいろ設定できますが、大体下記のように設定しています。

gzip on;
gzip_http_version 1.0;
gzip_vary on;
gzip_comp_level 6;
gzip_types text/plain text/xml text/css text/javascript
application/xhtml+xml application/xml
application/rss+xml application/atom_xml
application/javascript application/x-javascript;
gzip_disable "MSIE [1-6].";
gzip_disable "Mozilla/4";

おわりに

今回の備忘録はこれで以上です。
最近はNginxを選ぶことが多くなってきたので、しっかり理解していきたいと思います。

カテゴリー : 生活・趣味 タグ :
LIGの記事一覧をみる ▶
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

TOP