説明: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を実行して構成ファイルをロードします。