nginxでBasic認証を設定

nginx_basic_authapacheで.htaccessと.htpasswdを使って簡易User認証をしていたように、nginxでも実現する方法。

環境: CentOS 5.8, nginx 1.2.0

参考にしたSiteは下記。

 

まずは前の記事を参考に.htpasswdを作成する作業。
# cd /var/www/
# htpasswd -c /var/www/.htpasswd user

apacheがinstallされていない場合は下記を参考に設定する。

次にnginxのconfを設定
# vi /etc/nginx/conf.d/01_hoge.conf

auth_basic    "Secret Area"; 
auth_basic_user_file  "/var/www/.htpasswd";

これを追記。設定を再読み込み。
# /etc/rc.d/init.d/nginx reload

ちなみにnginxのconf全文は下記。

server {
    listen       80;
    server_name  dev.hoge.com;

    root    /var/www;
    index   index.php index.html index.htm;
    charset utf-8;

    location = /robots.txt  { access_log off; log_not_found off; }
    location = /favicon.ico { access_log off; log_not_found off; }

    auth_basic    "Secret Area"; 
    auth_basic_user_file  "/var/www/.htpasswd";

    location / {
    }

    location ~* \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        fastcgi_intercept_errors on;
        include        fastcgi_params;
        client_max_body_size 20M;
    }

    location ~ /\. {
        deny  all;
        access_log off;
        log_not_found off;
    }

    # if the file is not found, forwarded to index.php (permalinks)
    if (!-e $request_filename) {
        rewrite ^/(.*)$ /index.php?q=$1 last;
    }
}

 

< 2012/09/26 Modified >
auth_basicとauth_basic_user_fileはlocationの外に出さないとsite全体に適用されないみたい。

 

< Related Posts >