私の(Debianスタイル、パーティションファイル)設定には次のものがあります。
<VirtualHost *>
ServerName www.example.org
DocumentRoot /var/www/example
CustomLog /var/log/apache2/example/access.log combined
<Directory /var/www/example/subdir/admin/>
AllowOverride All
AuthType Basic
AuthName "admins only"
AuthUserFile /etc/apache2/pass.txt
Require valid-user
</Directory>
</VirtualHost>
これは無視されます。つまり、ログインプロンプトなしでそのディレクトリ内のファイルを参照できます。設定してLogLevel debug
みる
AH01628: authorization result: granted (no directives)
ログ行はによって生成されるため、[authz_core:debug]
認証行が存在することを認識しているように見えますが、実際にいくつかの認証を実行する必要はありません。
交換してもvalid-user
効果はall denied
ありません。
必要なモジュールはすべてあるようです。
.htaccess
別のディレクトリに追加しようとしましたが、「ここでは認証タイプは許可されていません」と記録されました。
私はAllowOverride All
それが許されるほとんどどこでもそれを持っています。
同様の問題に対する解決策はまだ見つかりませんでした。この問題を解決する方法を教えてください。喜んで試してみて、もう一度報告します。
答え1
これは明確な答えではありませんが、私がどのように解決したかを報告できます。
すべてのhttpリクエストはhttpsにリダイレクトされますが、どこで実行されるのかわかりません。これは、*:80の仮想ホストが無視され、*:443の仮想ホストが使用されることを意味します。認証エントリを*:443仮想ホストに移動し、前に「すべて拒否要求」を追加すると、ログインが要求されます。仮想ホストに含まれるコードです。
<Directory /subdir/>
Require all denied
</Directory>
<Location /subdir/>
AllowOverride All
AuthType Basic
AuthName "admins only"
AuthUserFile /etc/apache2/userpass.txt
AuthGroupFile /etc/apache2/group
Require group admins
</Location>
誰でもこれを改善または簡素化できます。そうしてください。
答え2
これは一般的な質問です。これApacheドキュメント<Location />
代わりにこのディレクティブを使用することをお勧めします<Directory />
。次の例のVirtualHostは、機能的な基本認証を提供する必要があります。
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/srv/www/htdocs/"
<Location />
AuthType Basic
AuthName "Authorized Access Only"
AuthUserFile /etc/apache2/auth/htpass
AuthGroupFile /etc/apache2/auth/group
Require group myusers
</Location>
<Directory "/srv/www/htdocs/">
Require all granted
</Directory>
</VirtualHost>
htpassファイルは、htpasswd -c /etc/apache2/auth/htpass myname
上記の仮想ホストの例に関連して、次の構文を使用してグループファイル(オプション!)を使用して生成されます。
myusers: myname myfriend mycolleague
htpasswdファイルとグループファイルは、Apacheを実行しているユーザーが読むことができる必要があります。
答え3
プロキシVMでは、ブロックに認証コードを含めることができます。
<proxy *>
AllowOverride All
AuthType Basic
AuthName "admins only"
AuthUserFile /etc/apache2/userpass.txt
AuthGroupFile /etc/apache2/group
Require group admins
</proxy>
それでも動作します。