基本的にはこちらの「Nginx で Basic 認証」という記事に書かれている通りなんだけど、
自分の状況としては「uwsgi+DjangoでWebアプリを動かしててその一部(今回は/myapp/以下とする)にBasic認証をかける」というのがやりたかった。
まずはCentOSではhttpd-toolsというのが必要らしい。
rootで実行。
yum install httpd-toolsで、任意のディレクトリに移動して、
htpasswd -c ./.htpasswd usernameパスワードを聞いてくるので確認用含めて2回入力。
これでOK。
複数作るときは
htpasswd ./.htpasswd username2でいけた。
ここで、「あれ?rootで作って良いのか?」ということに気付く。うっかりである。
仕方ないのでchownでnginx:nginx的なものに変えたりした。
で、/etc/nginx/conf.d/以下の書き換えたいコンフィグのところで
location /myapp/ {try_files $uri @myapp; }
location @myapp {
auth_basic "Restricted";
auth_basic_user_file /path/to/.htpasswd;
include uwsgi_params;
uwsgi_pass unix:/path/to/your/socket.sock;
proxy_request_buffering off;
}
location / { # 以下、通常のコンフィグが続く }で、OK。
ところでuwsgi周りのコンフィグの書き方、合ってるんだろうか。
ググって書いたので未だに不安である。誰か教えて欲しい。