ファイルだけをURLでお客様に公開したいな、という事案があり。
調べたところ、Nginxの機能で実現できるとのこと。ベーシック認証もかけられる。
久々のNginxでいろいろな事を忘れていたので、備忘録としてメモしておきます。
autoindex で 「index of」表示
お客様ごとにURIを変える予定なので、locationディレクティブに記述しています。
・ server{} html{} でも可
例)/etc/nginx/conf.d/xxxx.conf
server {
listen 443;
server_name xxx.com;
# 省略
location /output/develop {
root /home/public_data;
autoindex on; # ディレクトリ表示(on:有効 / off:無効)
autoindex_exact_size off; # ファイルサイズ(on:正確 / off:KB等にまるめ)
autoindex_localtime on; # タイムスタンプ(on:ローカル / off:UTC)
}
}
Nginxを再起動すれば反映します。
$ sudo nginx -s reload
これで xxx.com/output/develop/ にリクエストすると、
/home/public_data/output/develop/ 内のファイル一覧が表示されます。
auth_basic でベーシック認証
location内に記述することで、URIごとに異なるベーシック認証をかけることができます。
(プレフィックスの前方一致や正規表現を使えばもっと綺麗に書けるかもですが…)
例)/etc/nginx/conf.d/xxxx.conf
location /output/develop {
root /home/public_data;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
# basic_authorization
auth_basic "Login Authentication";
auth_basic_user_file /etc/nginx/.htpasswd;
}
/etc/nginx/.htpasswd は自分で作成する必要があります。
$ sudo htpasswd -c /etc/nginx/.htpasswd develop # 認証用ユーザー名
New password: # 認証用パスワードを設定
Re-type new password:
Adding password for user develop
Nginxを再起動すれば反映します。
$ sudo nginx -s reload