nginxでBasic認証をする

nginx version: nginx/1.4.1
Linux debian 3.2.0-4-amd64

サイトにBasicかけたかったので調べた。
nginxがBasic認証時に使う認証ファイルの生成には、apacheが使っているモジュールと同じものを使う。
認証ファイルの生成はapache2-utilsというソフトウェアを使う。
apacheに同梱されてるものだと思うけど今回の環境でapacheは入れてないのでapache2-utilsをインストールした。

インストール

sudo apt-get install apache2-utils

Basic認証ファイル

$ sudo htpasswd -c /etc/nginx/htpasswd "#{ユーザ名}"
New password:
Re-type new password:
Adding password for user hoge

htpasswdというファイルが生成される。
上で入力したユーザ名と入力したパスワードがBasic認証時に必要になる。

設定ファイルにかく

nginx.conf

    location / { 
+        auth_basic "Restricted";
+       auth_basic_user_file /etc/nginx/htpasswd;
    .......

認証をかけたいlocationディレクティブに上の2行を書けばOK。