UbuntuJauntyのnginxで基本認証を機能させようとしています。 nginx.confで、サーバーコンテキストの下に次の2行を追加しました。
server {
...
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/.htpasswd;
...
}
次に、Apache2-utilsをapt-getしてhtpasswdを取得しました。これは、htpasswdファイルの作成に使用しました。
htpasswd -d -c /etc/nginx/.htpasswd joe
サイトにアクセスしようとすると、期待どおりに認証ダイアログが表示されますが、ユーザー名とパスワードを入力すると、ダイアログボックスが更新されます。私が提供しているパスワードが気に入らないようです。 -dオプションの有無にかかわらずhtpasswdを実行しようとしましたが、それでもうまくいきませんでした。認証を拒否しました。私が間違っていることについて何か考えはありますか?
どんな助けでもいただければ幸いです。
私がチェックすること:
古いスレッドですが、答えはなく、Googleでよく参照されています。
このエラーが発生し、他の提案を試した場合は、.htpasswdファイルの親フォルダーのアクセス許可を確認してください。nginxユーザー(デフォルトではwww-data)はおよびexecuteパーミッション(これで修正されました)。
私がbashで遭遇したもう1つの落とし穴。プロンプトでパスワードを入力する代わりに、htpasswd
の-b
オプションを使用してパスワードをインラインで入力しました。
$ htpasswd -nb admin test123$secure
さまざまな暗号化アルゴリズムを試して、パスワードの不一致エラーが発生し続けた理由が理解できませんでした。私はそれが機能することをcurlで確認しました:
$ curl -u admin:test123$secure https://example.com
最後に、問題はecho
を通じて明らかになりました
$ echo test123$secure
test123
空の変数として解釈されたbashでdolar sign($)を使用するのを間違えたため、他のすべてを省略しました。これは、-b
オプションを削除し、プロンプトを使用してパスワードを入力するだけで回避できます。