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

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

Kazuya Takato

Kazuya Takato

こんにちは。づやです。
最近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はWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。

Webサイト制作の実績・料金を見る

この記事のシェア数

1983年生まれ。SIerとしてのキャリアをスタートし、JavaやC#を中心に多岐にわたる開発プロジェクトにエンジニアとして参加。その経験を活かし、LIGを創業。バックエンドおよびフロントエンドエンジニアとしての深い知識と経験をもとに、多様なプロジェクトに従事。2023年7月には社長室室長に就任にし、社内の体制やルールの最適化、AI技術の推進など、経営戦略の一翼を担っています。

このメンバーの記事をもっと読む
デザイン力×グローバルな開発体制でDXをトータル支援
お問い合わせ 会社概要DL