public_html
내 디렉토리에 개인 인증을 설정했지만 home
아무런 효과가 없습니다. 즉, 자격 증명을 묻는 팝업이 표시되어야 하는데 그런 일은 일어나지 않습니다. 인증은 서버 루트의 디렉터리에서 제대로 작동하며 잘 작동합니다. 지금은 서버를 개편하고 있어요.
자세한 내용은 다음과 같습니다. 제가 넣을 구성 파일과 관련된 몇 가지 부가적인 질문과 쿼리가 있습니다.용감한.
- 기본 HTTP 디렉터리가 있고
/var/www/html
HTTPS에도 동일한 디렉터리가 있습니다. - 내 개인 URL
index.html
에 대한 링크가 포함된 파일은 하나만 있습니다 .~tomas
좋은 결과.userdir
매핑에 모드를 사용하고 있습니다~tomas
. - 개인 디렉토리도 있고
cgi-bin
CGI는 잘 작동하지만 URL이 필요합니다.~tomas/cgi-bin
디렉토리 목록 표시, 어떤 이유로 작동하지 않고 403 Forbidden이 표시됩니다. - 승인 없이 홈 디렉토리를 HTTPS 및 HTTP에서 사용할 수 있기를 원합니다. 그러나 클라이언트가 다음 을 통해
public_html
개인 디렉터리 중 하나를 요청하면~user
액세스가 인증되어야 합니다 .인증은 HTTPS를 통해 이루어져야 합니다.. 따라서 HTTP를 HTTPS로 전환해야 합니다. HTTPS 기능을 설정하고 테스트했지만 이 컨텍스트에서는 어떠한 시행도 설정하지 않았습니다. 중요한 경우 FQDN이 없습니다.
~user
그러나 주요 질문은 HTTP를 통해서도 인증 자체가 작동하도록 하는 방법입니다 .
구성을 다 넣었 userdir.conf
는데추측하다문제는 .NET에서 와일드카드를 사용하는 것입니다 /home/*/public_html
.
이것은 userdir.conf
.
<IfModule mod_userdir.c>
UserDir "public_html"
UserDir disabled
UserDir enabled tomas
<Directory "/home/*/public_html">
AllowOverride FileInfo AuthConfig Limit Indexes
Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
SSLOptions +StdEnvVars
</Directory>
<Directory "/home/*/public_html/cgi-bin">
Options ExecCGI Indexes
SetHandler cgi-script
</Directory>
</IfModule>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
이 구성 파일이나 Apache에 대한 전반적인 접근 방식에 대한 의견이 있으면 의견을 남겨주세요.
답변1
핵심은 Limit
지침입니다. 단서는 존재한다<Limit>
명령 부분mod Apache 문서 페이지 core
.
<Limit>
<LimitExcept>
지시문과 함께 or 지시문을 사용할 때 ,Require
다른 지시문의 존재 여부에 관계없이 성공한 첫 번째 지시문이 요청을 승인한다는 점에 유의하세요.Require
Require
Require
현재 사례와 일치하는 첫 번째 사례에 따라 처리 방법이 결정됩니다. 내 질문의 구성에 따르면 다음과 같습니다.
<Limit GET POST OPTIONS>
Require all granted
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
Require all granted
위 목록의 두 번째 줄에 있는 GET 요청은 간단한 GET 요청으로 이 작업을 수행합니다. 그 AuthType Basic
아래 줄 과 다른 줄은 데드 코드입니다. 올바른 접근 방식은 다음과 같습니다.
<Limit GET POST OPTIONS>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
그런데 이는 지시어가 무시되는 경우이다 Limit
.
Require all granted
<Limit GET POST OPTIONS>
AuthType Basic
AuthName "Personal HTML"
AuthUserFile "/usr/share/apache2/passwd/passwords"
Require valid-user
</Limit>
<LimitExcept GET POST OPTIONS>
Require all denied
</LimitExcept>
첫 번째 줄은 요청을 성공하고 승인합니다.