こんにちは。づやです。
最近Nginxの設定ファイルをいじることが多くなってきたので、よく使う内容を備忘録としてまとめたいと思います。
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はWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。