Apache2 : 'AH01630 : 클라이언트가 서버 구성에 의해 거부되었습니다'
브라우저를 통해 localhost에 액세스하려고 할 때이 오류가 발생합니다.
AH01630: client denied by server configuration
다음을 사용하여 사이트 폴더 권한을 확인했습니다.
sudo chmod 777 -R *
내 구성 파일은 다음과 같습니다.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /home/user-name/www/myproject
<Directory />
Options FollowSymLinks
AllowOverride all
Allow from all
</Directory>
<Location />
Allow from all
Order Deny,Allow
</Location>
<Directory /home/user-name/www/myproject/>
Options Indexes FollowSymLinks MultiViews
AllowOverride all
Order allow,deny
Allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride all
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride all
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
Apache 2.4를 사용중인 경우
허용 및 거부 규칙을 확인해야합니다
http://httpd.apache.org/docs/2.4/upgrading.html#access를 확인하십시오 .
2.2에서는 클라이언트 호스트 이름, IP 주소 및 클라이언트 요청의 기타 특성을 기반으로하는 액세스 제어가 Order, Allow, Deny 및 Satisfy 지시문을 사용하여 수행되었습니다.
2.4에서 이러한 액세스 제어는 새 모듈 mod_authz_host를 사용하여 다른 권한 확인과 동일한 방식으로 수행됩니다.
새로운 지시문은 Require입니다 :
2.2 구성 :
Order allow,deny
Allow from all
2.4 구성 :
Require all granted
또한 이러한 변경 후 아파치 서버를 다시 시작하는 것을 잊지 마십시오 ( # service httpd restart
)
모든 디렉토리에 대해 Require all granted
대신 쓰기Allow from all
최신 정보
위의 방법으로 문제가 해결되지 않으면 아래 언급 된 행을 제거하십시오.
주문 허용, 거부
DocumentRoot 경로가 올바른지 다시 확인하십시오. 이 오류가 발생할 수 있습니다.
ravisorg가 Apache를 2.4 버전으로 업그레이드하는 OSX 10.10 Yosemite에 제안한 것과 동일한 내용을 변경했습니다. 다음은 http.conf에 추가 된 변경 사항입니다.
<Directory />
AllowOverride none
Require all denied
</Directory>
<Directory /Volumes/Data/Data/USER/Sites/>
AllowOverride none
Require all granted
</Directory>
이로 인해 하루 반 동안 견딜 수 없었지만 다른 모든 솔루션이 성공적으로 시도되지 않으면 해결책을 찾았습니다.
이것은 macOS 용입니다.
- 활동 모니터로 이동 (스포트라이트 검색 : 활동)
- 활동 모니터에서 Apache 서비스 인 httpd를 검색하십시오.
- 루트에 속하는 것을 선택하고 왼쪽 상단의 X를 클릭하여 닫습니다.
그 시점에서 나는 즉시 403 오류가 발생하지 않고 모든 것이 예상대로 작동하기 시작했습니다. 이상한 것은 아파치를 다시 시작하지 않아도 방금 작동했습니다. 내 로컬 호스트에 갔을 때 자체적으로 다시 시작된 것 같습니다. 솔직히 모르겠지만 문제는 apachectl restart를 사용할 때 Apache가 실제로 다시 시작되지 않는다는 것입니다. 중지하거나 시작하십시오. 이것이 누군가를 돕기를 바랍니다.
문제는 VirtualHost에 있지만 아마도 그렇지 않습니다.
모든 권한 부여 필요
구성 이 올바른지 확인 하십시오. 올바른 샘플이 있습니다.
오류 로그에 꼬리를 붙이고 페이지를 다시로드하면 정확한 문제에 대한 추가 정보가 표시됩니다.
$ {APACHE_LOG_DIR}이 실제로 작동하도록 환경 변수를 가져옵니다 ...
source /etc/apache2/envvars
그런 다음 꼬리를보고 ...
tail -f ${APACHE_LOG_DIR}/error.log
몇 시간을 보낸 후 스스로를 해결했습니다.
vagrant vm의 coookbook을 통해 Apache / 2.4.7 (Ubuntu)을 설치했습니다.
/etc/apache2/apache2.conf 파일에는 <VirtualHost *:80>
기본적으로 요소 가 없습니다 .
나는 그것을 끝내기 위해 두 가지 변경을했다.
- 추가
<VirtualHost *:80>
- 추가
옵션 색인 FollowSymLinks
AllowOverride all 모두에서
허용
마지막으로 방금 vm.을 부팅했습니다.
누구든지 그 wamp 서버 기본값이 httpd-vhosts.conf
파일을 포함하지 않는다고 생각 했습니까 ? 내 접근 방식은 아래 메모를 제거하는 것입니다
conf
# Virtual hosts
Include conf/extra/httpd-vhosts.conf
에서 httpd.conf
파일. 그게 다야.
나의 경우에는,
macOS Mojave (Apache / 2.4.34)를 사용하고 있습니다. /etc/apache2/extra/httpd-vhosts.conf 파일의 가상 호스트 설정에 문제가있었습니다. 필요한 디렉토리 태그를 추가 한 후 내 문제가 사라졌습니다.
모든 권한 부여 필요
전체 가상 호스트 설정 구조가 절약되기를 바랍니다.
<VirtualHost *:80>
DocumentRoot "/Users/vagabond/Sites/MainProjectFolderName/public/"
ServerName project.loc
<Directory /Users/vagabond/Sites/MainProjectFolderName/public/>
Require all granted
</Directory>
ErrorLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-error_log"
CustomLog "/Users/vagabond/Sites/logs/MainProjectFolderName.loc-access_log" common
</VirtualHost>
MainProjectFolderName을 정확한 ProjectFolderName으로 바꾸십시오.
이것은 나를 미치게했다. 마지막으로 문제가 무엇인지 알아 냈습니다. 오류 로그에 직접 경로를 사용하고 있었고 잘못되었습니다.
Apache가 왜 모호하고 잘못된 오류 메시지를 표시합니까? 대신 다음과 같은 정확하고 유용한 오류 메시지를 사용하십시오. ErrorLog 지시문의 경로 "/wrong/path/and/filename.log"가 잘못되었습니다.
어쨌든, 수정하려면 오류 로그 지시문이 다음과 같아야합니다.
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Windows OS의 WampServer에서 Apache 2.4를 사용중인 경우
당신은 열 필요가 HTTPS-vhosts.conf의 메모장에서 파일을.
C:\wamp64\bin\apache\apache2.4.37\conf\extra\https-vhosts.conf
위의 파일을 찾을 수없는 경우 아래 스크린 샷을 확인하십시오
<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/wamp64/www
<Directory "c:/wamp64/www/">
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require local
</Directory>
</VirtualHost>
위의 코드에서 바꾸기
Require local
와
Require all granted
그리고 저장하십시오. Apache 서비스를 다시 시작한 후 다시 시도하십시오.
https 호스트가 있다면 Require all granted
ssl 구성도 변경 하는 것을 잊지 마십시오 .
또한 때때로 아파치 사용자로서 권한을 확인하는 것이 유용합니다.
# ps -eFH | grep http # get the username used by httpd
...
apache 18837 2692 0 119996 9328 9 10:33 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
# su -s/bin/bash apache # switch to that user
bash-4.2$ whoami
apache
bash-4.2$ cd /home
bash-4.2$ ls
bash-4.2$ cd mysite.com
bash-4.2$ ls
bash-4.2$ cat file-which-does-not-work.txt
Wamp 3 (Apache 2.4)의 경우 다른 답변에 설명 된대로 서버를 온라인 상태로 두는 것 외에 가상 호스트 파일 conf/extra/httpd-vhosts.conf
에서 교체해야 할 수도 있습니다.
Require local
와
Require all granted
httpd.conf
당신이 가지고있는 경우에 적용됩니다
Include conf/extra/httpd-vhosts.conf
사용자 별 구성이 포함되어 있는지 확인하십시오!
이 페이지에 나와있는 다른 답변이 없다면 몇 시간 동안 실수를 한 후에 나왔던 것입니다.
Sites
my 로 지정된 사용자 별 구성을 사용 UserDir
했습니다 /private/etc/apache2/extra/httpd-userdir.conf
. 그러나 엔드 포인트에 대한 액세스가 금지되었습니다 http://localhost/~jwork/
.
에 /var/log/apache2/error_log
대한 액세스 /Users/jwork/Sites/
가 차단되고 있음을 알 수있었습니다 . 그러나를 통해 DocumentRoot에 액세스 할 수있었습니다 http://localhost/
. 이것은 ~jwork
사용자 를 볼 수있는 권한이 없음을 나타냅니다 . 그러나 지금까지 내가 말할 수있는대로 ps aux | egrep '(apache|httpd)'
와 lsof -i :80
아파치가 출마했다, jwork
뭔가 분명히 내 사용자 구성을 작성하지 그래서, 사용자.
이라는 사용자 jwork
에게 다음과 같은 구성 파일이 있습니다.
/private/etc/apache2/users/jwork.conf
<Directory "/Users/jwork/Sites/">
Require all granted
</Directory>
이 구성은 완벽하게 유효합니다. 그러나 사용자 구성이 포함되지 않은 것으로 나타났습니다.
/private/etc/apache2/extra/httpd-userdir.conf
## Note how it's commented out by default.
## Just remove the comment to enable your user conf.
#Include /private/etc/apache2/users/*.conf
이것은 userdir conf 파일의 기본 경로이지만 아래에서 볼 수 있듯이에서 구성 할 수 있습니다 httpd.conf
. 다음 라인이 사용 가능한지 확인하십시오.
/private/etc/apache2/httpd.conf
Include /private/etc/apache2/extra/httpd-userdir.conf
# ...
LoadModule userdir_module libexec/apache2/mod_userdir.so
다른 답변에서 언급 된 누락 Order
및 Allow
지시문 외에도 지시문의 일치하지 않는 정규 표현식 DirectoryMatch
으로도이 오류가 발생할 수 있습니다.
요청 된 경로가 /home/user-foo1bar/www/myproject/
다음과 일치하면 일치하지 않습니다.
<DirectoryMatch "/home/user-[a-z]+/www/myproject/">
...
</DirectoryMatch>
따라서 유효한 액세스 구성이라도이 오류가 발생할 수 있습니다.
하나의 모호한 (방금 처리 한) 가능한 원인은 서버 파일 시스템의 루트에있는 경로에 쓰는 기본 구성 파일 (.htaccess 아님)의 내부 mod_rewrite 규칙입니다. 당신이이 말 /media
귀하의 사이트에 디렉토리를, 당신은 다음과 같이 재 작성 :
RewriteRule /some_image.png /media/some_other_location.png
/media
서버 루트에 디렉토리 가있는 경우 , 파일 시스템 루트가 mod_rewrite에 의해 먼저 검사되므로 존재 여부에 대해 사이트 디렉토리에있는 것이 아니라 다시 쓰기를 시도합니다 (액세스 거부 오류 발생). 경로의 첫 번째 디렉토리 중 사이트 디렉토리 앞에 있습니다.
문제는 지시문이 <디렉토리> 아래에 있지 않을 수 있습니다
https://httpd.apache.org/docs/2.4/mod/mod_authz_host.html#requiredirectives
지시문은 <Directory>, <Files> 또는 <Location> 섹션과 .htaccess 파일 내에서 참조되어 서버의 특정 부분에 대한 액세스를 제어 할 수 있습니다. 클라이언트 호스트 이름 또는 IP 주소를 기반으로 액세스를 제어 할 수 있습니다.
누군가에게 도움이 될만한 다른 것을 얻었습니다. PHP 5.6 => 7.0에서 업그레이드 한 후 동일한 오류 메시지가 표시되었습니다. 우리는 PHP 업로드 설정을 변경했으며, 복사 한 후에 변경하는 것을 잊었습니다. 당시 이미지를 업로드하지 않았지만 Silverstripe (CMS)는 해당 오류를 저장하고 던지는 것을 거부했습니다. 이미지 업로드 크기가 증가했으며 곧바로 작동했습니다.
Ubuntu를 사용할 때 CGI 모듈이 활성화되어 있는지 확인하십시오. 그렇지 않은 경우 :
sudo a2enmod cgi
이 오류가 발생하여 위와 같이 도움이되지 않은 사람들은 error.log의 문제 폴더가 실제로 서버에 있는지 확인하십시오. Django가 광산을 잘못된 곳에서 자동으로 생성했습니다 (정적 루트로 엉망이되었습니다 manage.py collectstatic
). 왜 오류의 이름을 올바르게 지정할 수 없는지 모릅니다.
이것이 나와 같이 인터넷 검색을 도와주는 사람이라면이 오류 메시지가 내 서버의 SVG 파일에 액세스하려고합니다 (예 : https://example.com/images/file.svg) . 다른 파일 형식은 정상적으로 보였고 SVG 만 실패했습니다.
나는 /etc/httpd
conf 파일을 require all denied
찾아서 모든 유형의 구성을 확인했지만 어떤 구성 이이 효과를 가지고 있는지 찾을 수 없었습니다.
VirtualHost 구성에서 LogLevel을 디버깅하도록 설정했으며 '모두 거부 필요'가 있음을 지정하는 mod_authz_core 로깅을 볼 수 있습니다.
[Mon Jun 10 13:09:54.321022 2019] [authz_core:debug] [pid 23459:tid 140576341206784] mod_authz_core.c(817): [client 127.0.0.1:54626] AH01626: authorization result of Require all denied: denied
[Mon Jun 10 13:09:54.321038 2019] [authz_core:debug] [pid 23459:tid 140576341206784] mod_authz_core.c(817): [client 127.0.0.1:54626] AH01626: authorization result of <RequireAny>: denied
[Mon Jun 10 13:09:54.321082 2019] [authz_core:error] [pid 23459:tid 140576341206784] [client 127.0.0.1:54626] AH01630: client denied by server configuration: /home/blah/htdocs/images/file.svg
블라인드 테스트를 통해 파일을 웹 루트의 루트로 옮긴 다음 https://example.com/file.svg 에서 액세스 할 수 있다는 것을 알았 으므로 'images'폴더에서만 실패했습니다. 이로 인해 이미지 폴더에 .htaccess 파일이 생겼습니다.
Zen Cart 1.5는 다음과 같은 images / .htaccess 파일과 함께 제공됩니다.
# deny *everything*
<FilesMatch ".*">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Deny from all
</IfModule>
</FilesMatch>
# but now allow just *certain* necessary files:
<FilesMatch "(?i).*\.(jpe?g|gif|webp|png|swf)$" >
<IfModule mod_authz_core.c>
Require all granted
</IfModule>
<IfModule !mod_authz_core.c>
Order Allow,Deny
Allow from all
</IfModule>
</FilesMatch>
이것은 매우 성가신 일 이며 다른 사람들이 파일 시스템의 모든 수준에서 .htaccess 파일을 확인하여 이러한 종류의 톰 바보가 발생하는 경우 액세스하는 데 문제가있는 파일로 연결되도록 상기시켜 줄 수 있기를 바랍니다.
실제로 디렉토리 액세스를 : 80 항목에 추가 하여이 문제를 해결했습니다.
<Directory "c:/whatever-directory-you-use/">
AllowOverride All
Require all granted
</Directory>
모든 사람이 나에게 모든 '보안'을 갖기 전에 특정 상황에서 이것은 보안 문제가 아닙니다.
원격 리소스를 사용하는 경우 CURL 요청이 HTTPS / TLS를 통해 전달되는지 확인하는 것이 좋습니다.이 디렉토리 항목은 443 포트로 전달됩니다.
참고 URL : https://stackoverflow.com/questions/18392741/apache2-ah01630-client-denied-by-server-configuration
'development' 카테고리의 다른 글
각각을 사용할 때 목록 대 튜플? (0) | 2020.02.20 |
---|---|
배열을 반복하는 대신 정의 된 횟수만큼 ng-repeat하는 방법은 무엇입니까? (0) | 2020.02.20 |
자바 스크립트에서 float 형식을 지정하는 방법은 무엇입니까? (0) | 2020.02.20 |
모든 자식 커밋을 하나로 스쿼시하는 방법은 무엇입니까? (0) | 2020.02.20 |
ASP.Net MVC modelState에서 모든 오류를 얻는 방법? (0) | 2020.02.19 |