19

Ubuntu Jaunty で基本認証を 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 を実行してみましたが、それでもうまくいきません。認証を拒否しました。私が間違っていることはありますか?

どんな助けでも大歓迎です。

4

4 に答える 4

29

私がチェックすること:

  • `/etc/nginx/.htpasswd` のアクセス許可 - nginx を実行しているアカウントでファイルを読み取ることができますか? 一時的に「chmod 644」を使用して、全員が読めるようにすることもできます。それが機能する場合は、`chown` と `chmod` 設定の適切な組み合わせを整理して、nginx とあなた / root はそれを読み取ることができますが、他のユーザーは (セキュリティのために) 読み取れないようにすることができます。
  • `htpasswd` が正しい形式でハッシュを生成していることを確認してください。通常、約 13 文字の英数字です (たとえば、「username:wu.miGq/e3nro」)。このコマンドは、`username:$apr1$hzB2K...$b87zlCYMKufOxn9ol5QV4/` のような MD5 ハッシュも生成できます。これらは nginx では機能しません。
  • nginx のデバッグ出力の増加を調べ、エラー ログで手がかりを確認してください。
于 2011-07-05T09:15:23.440 に答える
10

古いスレッドですが、答えはありません。Google でよく参照されています。

このエラーが発生し、他の提案を試した場合は、.htpasswd ファイルの親フォルダーのアクセス許可を確認してください。nginx ユーザー (デフォルトでは www-data) に読み取りと実行のアクセス許可が必要です (これで修正されました)。

于 2015-04-21T13:26:23.947 に答える
7

私がbashで遭遇した別の落とし穴。プロンプトでパスワードを入力する代わりに、パスワードをインラインで入力する-bオプションを使用しました。htpasswd

$ htpasswd -nb admin test123$secure

さまざまな暗号化アルゴリズムを試しながら、パスワードの不一致エラーが何度も発生する理由がわかりませんでした。それが機能することをcurlで確認しました:

$ curl -u admin:test123$secure https://example.com

最後に、問題はecho

$ echo test123$secure
test123

空の変数として解釈されるドル記号 ($)を bashで使用するという間違いを犯したため、他のすべてが省略されました。-bこれは、オプションを削除し、プロンプトを使用してパスワードを入力するだけで回避できます。

于 2015-10-12T18:03:15.547 に答える