내 (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
이것은 일반적인 질문입니다. 이것아파치 문서<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>
여전히 작동합니다.