저는 Apache/2.2.22를 실행하고 있습니다.
Apache 인증 요구 사항을 올바르게 구현하는 방법을 모르겠습니다.
내 웹사이트에는 두 가지 영역이 있습니다.
- 액세스에는 항상 비밀번호 인증이 필요합니다(/restricted 및 /cgi-bin/restricted).
- 로컬 IP 주소(/local 및 /cgi-bin/local)를 기반으로 접근을 허용할 수 있습니다.
그러나 나는 다음과 같은 행동을 취합니다.
- /restricted/index.html에 대한 올바른 액세스에는 인증이 필요합니다.
- /cgi-bin/restrict/에 대한 올바른 액세스에는 인증이 필요합니다.
- /cgi-bin/restricted/target.cgi 액세스에는 인증이 필요하지 않습니다.
이러한 모든 테스트는 실제로 /local 및 /cgi-bin/local에 대한 액세스가 허용된 IP 주소에서 수행되었으므로 어떤 방식으로든 제한을 초과할 수 있지만 절대 그렇게 되어서는 안 됩니다.
내 VirtualHost 구성의 관련 부분은 다음과 같습니다. (현재 <Location />
cgi-bin 섹션에서 s를 사용하고 있으며 이전에 관련 s에 대한 모든 요구 사항이 있었지만 <Directory />
내가 찾은 다른 제안을 기반으로 이를 제거했습니다. 아무런 효과가 없습니다.)
DocumentRoot /var/www
# HTML section
<Directory /var/www/restricted>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
AuthType Basic
AuthName "Restricted"
AuthBasicProvider file
AuthUserFile /etc/apache2/passwords
Require user username
</Directory>
<Directory "/var/www/local/">
Options Indexes FollowSymLinks
Order allow,deny
Allow from 192.168.1.0/24
Allow from 192.168.0.0/24
</Directory>
# CGI section
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin/resricted">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
</Directory>
<Location "/usr/lib/cgi-bin/restricted">
AuthType Basic
AuthName "Restricted"
AuthBasicProvider file
AuthUserFile /etc/apache2/passwords
Order allow,deny
Require user username
</Location>
<Directory "/usr/lib/cgi-bin/local">
AllowOverride None
Options +ExecCGI +SymLinksIfOwnerMatch -MultiViews
</Directory>
<Location "/usr/lib/cgi-bin/local">
Order allow,deny
Allow from 192.168.1.0/24
Allow from 192.168.0.0/24
</Location>
답변1
#<Location "/usr/lib/cgi-bin/restricted">
<Location "/cgi-bin/restricted">
#<Location "/usr/lib/cgi-bin/local">
<Location "/cgi-bin/local">
'위치'는 URL에 포함된 경로, 즉 fs 디렉터리가 아닌 호스트 이름 뒤에 /로 시작하는 부분을 의미합니다.