説明:ngx_http_auth_basic_module
モジュールは、訪問者が正しいユーザーパスワードを入力しない限り、web
コンテンツにアクセスできないようにします。ウェブ上の一部のコンテンツは他の人に知られたくないが、一部の人には見せたい場合、nginx
のhttp auth
モジュールとApache http auth
はどちらも良い解決策です。
ここでは、Jun さんのLNMP
を例にとります。デフォルトでは、nginx
にはngx_http_auth_basic_module
モジュールがすでにインストールされています。
Nginx 認証設定の例#
1. 認証ファイルの生成
# printf "test:$(openssl passwd -crypt 123456)\n" >>/home/htpasswd
# cat /home/htpasswd
test:xyJkVhXGAZ8tM
** 注意:** ここではアカウント:test
、パスワード:123456
を使用しています。認証ファイルのパスを覚えておいてください。
2. ウェブサイトの conf ファイルの設定
server{
listen 80;
server_name www.moeyy.cn moeyy.cn;
index index.html index.php;
root /home/wwwroot/www.moeyy.cn;
location /
{
auth_basic "Please enter your username and password";
auth_basic_user_file /home/htpasswd;
autoindex on;
}
}
** 注意:** 必ずauth_basic_user_file
のパスを注意してください。そうしないと、403 エラーが繰り返し表示されます。
3. Nginx の再起動
/etc/init.d/nginx restart
LNMP で Nginx ディレクトリにアクセス認証のユーザー名とパスワードを設定する#
時には、Apache
のように特定のディレクトリにアクセス認証を追加する必要があります。通常、Apache
ではhtpasswd
を使用して追加しますが、htpasswd
はapache2-utils
に含まれており、一般的なLNMP
のワンクリックインストールパッケージや独自にコンパイルしてインストールしたLNMP
にはインストールされていません。
1. htpasswd ファイルの作成
次のコマンドを実行します:
wget -c https://www.moeyy.cn/usr/down/htpasswd.sh;bash htpasswd.sh
指示に従ってユーザー名、パスワード、および認証ファイル名を入力します。スクリプトは認証ファイルを自動的に生成します。スクリプトが返すファイルパスを記録してください。例:/usr/local/nginx/conf/vpser.net.auth
。
2. Nginx に auth 認証設定を追加
以下は、特定のドメインのsoft
ディレクトリを例にとります。ドメインのserver
セクションに次のコードを追加します:
location ^~ /soft/
{
auth_basic "Authorized users only";
auth_basic_user_file ここには前述のスクリプトが返すファイルパスを記入してください;
}
Authorized users only
はメッセージですが、自分が表示させたいメッセージに変更できます。auth_basic_user_file
の後ろには、htpasswd.sh
スクリプトが返すファイルのパスを入力する必要があります。上記の指示に従って設定を変更した後、nginx
を再起動し、http://yourdomainname/soft/
にアクセスすると、ユーザー名とパスワードの入力が求められます。
** 注意:** 認証を追加すると、このディレクトリ内のPHP
は解析されず、ダウンロードのプロンプトが表示されます。PHP
を解析したい場合は、上記の設定を次のように変更できます:
location ^~ /soft/ {
location ~ .*\.(phpphp5)?$ {
fastcgi_pass unix:/tmp/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
auth_basic "Authorized users only";
auth_basic_user_file ここには前述のスクリプトが返すファイルパスを記入してください;
}
このチュートリアルは、ワンクリックインストールパッケージまたは独自にインストールしたLNMP
に適していますが、ディレクトリと設定ファイルの場所は異なる場合があります。
設定が完了したら、/usr/local/nginx/sbin/nginx -t
を実行して構成にエラーがないかをテストします。
次に、/usr/local/nginx/sbin/nginx -s reload
を実行して構成ファイルをロードします。