2016-06-16 8 views
0

서버에 가상 호스트로 몇 개의 준비 사이트가 있고 공용 가상 호스트 사이트 몇 개가 있습니다. 진술하는 사이트는 모두 하나의 디렉토리 아래에 있습니다 (예 : /var/www/staging-sites/[site-document-root]).apache 여러 가상 호스트에 대한 기본 인증

지금까지 각 가상 호스트에 대해 HTTP Basic Auth를 구성 해 보았지만 모든 가상 호스트에 대해 한 번 수행해야 할 것처럼 보입니다.

"apache global basic auth"이라는 질문은 기본 인증 지시문을 기본 apache 구성 파일의 <Directory /var/www/staging-sites> 컨테이너에 넣을 수 있지만 브라우저가 자격 증명을 요구하지 않는다는 것을 나타냅니다. 여기

tail -n 7 /etc/apache2/apache2.conf의 출력입니다 :

<Directory "/var/www/staging-sites/"> 
    AuthType Basic 
    AuthName "Authentication Required" 
    AuthBasicProvider file 
    AuthUserFile /var/www/staging-sites/.htpasswd 
    Require valid-user 
</Directory> 
  • 내가 /var/www/staging-sites/.htpasswd가 존재하는 것을 확인했습니다, 그리고 사이트 foo.mydomain.com는 문서 루트를 사용하는/var/www/staging-sites/foo.
  • 새 구성이로드되도록 아파치를 다시 시작했습니다.

그러나 http://foo.mydomain.com을 열면 기본 인증 자격 증명을 묻지 않고 사이트가 표시됩니다.

내가 뭘 잘못하고 있니?

+0

실제로 각 가상 호스트에 대한 기본 인증 요구 사항을 별도로 구성해야합니다. 그러나 당신이'.htpasswd' 파일에 _absolute_ 경로를 사용하기 때문에 _all_ 가상 호스트들에 대해 같은 파일을 사용할 수 있습니다. 그것은 노력을 줄입니다. – arkascha

답변

1

해결되었습니다.

<Directory /var/www/staging-sites/foo> 
    Require all granted 
</Directory> 

분명히 모든 버추얼 호스트가 동등한 구성으로 만들어진 : 문제는 가상 호스트 구성 자체에서이 부분이었다. 예상대로 가상 호스트 구성의 Require all granted은 글로벌 구성에서 Require valid-user을 능가합니다.

위의 줄을 제거하면 위에 구성된 기본 인증이 제대로 작동합니다.

관련 문제