Apache : 서버 구성에 의해 클라이언트가 거부되었습니다.


150

나는 얻고있다

[화 4 월 24 일 12:12:55 2012] [오류] [클라이언트 127.0.0.1] 클라이언트가 서버 구성에 의해 거부되었습니다 : / labs / Projects / Nebula / bin /

내 디렉토리 구조는 다음과 같습니다 (Symfony 2를 사용하고 있으며 다른 웹 프레임 워크와 유사한 구조 여야 함)

여기에 이미지 설명을 입력하십시오

다음과 같은 vhosts 설정이 있습니다.

<VirtualHost nebula:80>
    DocumentRoot "/labs/Projects/Nebula/web/"
    ServerName nebula
    ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>

<Directory "/labs/Projects/Nebula/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>

문제가 무엇인지 궁금하고 어떻게 해결합니까?


1
@JiewMeng : 아마도 Phil의 대답을 받아 들여야 할 것입니다. 오늘날 대부분의 Apache 설치 에서 문제가되는 것 같습니다 (Apache 2.4). 감사.
dotancohen

답변:


396

Apache 2.4.3 (또는 약간 이전)은 종종이 오류를 발생시키는 새로운 보안 기능을 추가했습니다. "서버 구성에 의해 클라이언트가 거부되었습니다"라는 형식의 로그 메시지도 표시됩니다. 이 기능을 사용하려면 디렉토리에 액세스하기 위해 권한이 부여 된 사용자 ID가 필요합니다. Apache와 함께 제공되는 httpd.conf에서 DEFAULT에 의해 설정됩니다. 지시문으로 기능을 사용하는 것을 볼 수 있습니다.

Require all denied

기본적으로 모든 사용자에 대한 액세스를 거부합니다. 이 문제를 해결하려면 거부 된 지시문을 제거하거나 훨씬 더 나은 방법으로 액세스 권한을 부여 할 디렉토리에 다음 지시문을 추가하십시오.

Require all granted

에서와 같이

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>

9
또한 추가해야 할 수도 있습니다 Satisfy Any애프터Require all granted
MarkHu

@ MarkHu- Satisfy any이 맥락에서 가능한 필요성을 설명 할 수 있습니까? 나는 머리카락을 여기에서 꺼내고 있기 때문에 묻고 있는데 이것을 추가하면 모든 것이 나를 위해 일했습니다. 이상한 점은 최근 Apache가로 업그레이드 될 때까지 앱이 기존 vhost 항목과 작동하고 있다는 것입니다 2.4.9. Weirder는 동일한 app / vhost 및 Apache / PHP 버전을 가진 다른 서버에서 제대로 작동한다는 것입니다. 그러나 다른 서버-AWS Linux 및 Ubuntu 14.10. 이상한 ... httpd.conf구성 차이가 있는지 확인하려면 각 서버의 파일 을 비교해야한다고 생각합니다 .
Darragh Enright

또한 htaccess액세스하려는 경로를 확인하십시오
Ujjwal Singh

@MarkHu Satisfy Any 솔루션을 사용하기로 결정하기 전까지는 제 환경이 작동하지 않았습니다. 감사!!!
Neonigma

모든 부여를 요구하도록 변경 한 후에도 동일한 오류 액세스 거부가 표시됩니다.
Deepak

10

확인 잘못된 구문을 사용하고 있습니다.

Allow from 127.0.0.1
Allow from ::1
...

1
아파치> 2.4의 경우 이것만으로는 나를 위해 일할 수 없었습니다. 와 결합하지만 일 Require all granted에 의해 제안, @ 필-L
Mugoma J. Okomba

5

Apache 2.4에서는 이전 액세스 권한 부여 구문이 더 이상 사용되지 않으며 Require를 사용하여 새 시스템으로 대체되었습니다 .

그런 다음 원하는 것은 다음과 같습니다.

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

이 발생한 연결을 허용 하거나 로컬 호스트에서 또는 "192.168.1"로 시작하는 IP 주소에서합니다.

구성을 즉시 업데이트하지 않으려는 경우 Apache 2.4에서 이전 구문을 인식하도록하는 새로운 모듈도 있습니다.

sudo a2enmod access_compat

1

"Allow from all"로 127.0.0 192.168.1 :: 1 localhost에서 Allow를 변경할 수 있습니까? 그래도 문제가 해결되면 콘텐츠를 요청할 수있는 곳을 덜 제한해야합니다.


1

다음은 데비안의 symfony 1.4 가상 호스트 파일입니다.

  <Directory /var/www/sf_project/web/>
    Options All Indexes FollowSymLinks    
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

localhost와 같은 특정 IP 범위에 대한 액세스를 제한하지 않으려면 다음을 사용하십시오.

Allow from 127.0.0.0/8

위해 mod_authz_host는 IP 범위를 필터링 할 책임이있다. 자세한 내용을 찾을 수 있습니다.

그러나 문제는 "apache2.conf"의 구성 오류와 관련이있을 수 있습니다.

아파치가 어떤 OS에서 실행되고 있습니까?


1

당신이 가지고 있다면

Allow from All

httpd.conf에서 우리가 가지고 있는지 확인하십시오

index.php

httpd.conf의 아래 줄과 같이

DirectoryIndex index.html index.php

1

Vesta CP를 사용 하여이 문제가 있었고 트릭은 .htaccess를 제거하고 모든 파일에 다시 액세스하려고했습니다.

그 결과 .htaccess 파일이 재생되어 파일에 액세스 할 수있었습니다.



-3

이 코드는 나를 위해 일했다 ..

 <Location />
Allow from all
Order Deny,Allow
</Location> 

이것이 다른 사람들을 돕기를 바랍니다.


1
이것은 아파치 구성에 추가하도록 장려해서는 안됩니다.
Ricky Mutschlechner

이를 통해 아파치는 컴퓨터의 모든 파일에 액세스 할 수 있습니다. 보안이 매우 나쁩니다.
Deleet
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.