디렉토리에 대한 액세스를 허용하지만 Apache“서버 구성에 의해 클라이언트가 거부되었습니다”(vhost 구성) CustomLog “logs/dummy-host.example.com-access_log” common </VirtualHost> <VirtualHost *:80>

Ubuntu의 Apache에서는 가상 호스트를 설정했지만 브라우저에서 “403 액세스 금지”오류가 계속 발생합니다. 로그에 ” 서버 구성에 의해 클라이언트가 거부되었습니다 : / home / remix / “.

온라인 솔루션을 찾고 디렉토리 액세스에 대한 많은 게시물 (모두 허용 등)을 찾았지만 이미 알고있는 한 이미 그랬습니다. 에서 아파치 – vhosts.conf 다음과 같은 코드가있다 :

NameVirtualHost *:80

<VirtualHost *:80>
    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/opt/lampp/htdocs/"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/dummy-host.example.com-error_log"
    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot "/home/remix/"
    ServerName testproject
    ServerAlias testproject
    <Directory "/home/remix/">
        Options Indexes FollowSymLinks Includes ExecCGI
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>
</VirtualHost>

나는 또한 추가했다

127.0.0.1    testproject

/ etc / hosts 파일에 추가하십시오.

또한 / home / remix / 폴더에는 index.html 파일이 포함되어 있으며 httpd.conf에서 가상 호스트가 활성화되어 있습니다.

내가 보지 못한 것이 있습니까?

편집 : 이것은 Apache error_log 항목입니다.

[Sat Aug 18 09:15:32.666938 2012] [authz_core:error] [pid 6587]
[client 127.0.0.1:38873] AH01630: client denied by server configuration: /home/remix/


답변

인증 구성을 변경하십시오.

<Directory /home/remix/>
    #...
    Order allow,deny
    Allow from all
</Directory>

… 아파치 2.4 버전과 동일합니다.

<Directory /home/remix/>
    #...
    Require all granted
</Directory>

업그레이드 해야 할 다른 변경 사항에 대한 정보 는 업그레이드 개요 문서 를 검토하십시오 . Google (및이 사이트)에서 발견 한 대부분의 구성 예제 및 지원은 2.2를 참조하고 있습니다.


답변

디렉토리에 대한 권한을 확인하십시오. 예를 들어 자신 외에 다른 사람에 대한 액세스를 거부하도록 설정되어 있습니다.

$ ls -ld /home/remix
drwx------ 92 remix remix 4096 Aug 17 22:59 /home/remix

당신이 볼 경우 drwx------정확하게,이 경우입니다. 다음을 실행하여 수정하십시오.

chmod a+x /home/remix

답변

httpd서비스를 실행중인 사용자 가이 디렉토리에 액세스 할 수 있는지 확인하십시오 .


답변

“서버 구성에 의해 클라이언트가 거부되었습니다”는 Linux 서버 자체가 Apache가 아니라 파일에 대한 액세스를 금지 함을 의미합니다.

권한 / 소유권 / 그룹 멤버쉽 변경을 통해 액세스를 제공해도 문제가 해결되지 않으면 경로 원인은 ‘Selinux에서 Apache DocumentRoot 재배치’에 설명 된대로 적절한 SE Linux 컨텍스트가없는 폴더에 대한 액세스를 금지하는 SELinux 일 수 있습니다 .

  • setenforce 0파일을 액세스 가능하게하여 SELinux를 일시적으로 비활성화 한 경우
  • SELinux를 다시 활성화 setenforce 0하면 파일을 다시 액세스 할 수 없게됩니다.

그런 다음 파일 권한이 무엇이든 SELinux에 의해 액세스가 금지됩니다.


답변

사람들에게이 문제를 일으킬 수있는 또 하나의 간단한 (그러나 까다로운 문제)는 사용자 디렉토리가 / home / *에 있지 않을 때입니다.

제공된 userdir.conf는 다음과 같은 것을 포함합니다 : (하지만 Userdir : disabled)

$ cat /etc/httpd/conf.d/userdir.conf
<IfModule mod_userdir.c>
    UserDir enabled
    UserDir public_html
</IfModule>

<Directory "/home/*/public_html">
    AllowOverride FileInfo AuthConfig Limit Indexes
    Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
    Require method GET POST OPTIONS
</Directory>

디렉토리 스펙은 ~ user == / home / user로 가정합니다. 사용자 홈 디렉토리가 실제로있는 디렉토리 스펙을 변경하거나 추가하십시오.

꽤 분명하지만 알아내는 데 시간이 걸렸습니다 !! 😛 DUH!

예를 들어 ~ user == / nethome / user

<Directory "/nethome/*/public_html">
    AllowOverride All
    Options MultiViews Indexes Includes FollowSymLinks
    Require all granted
</Directory>

일반적으로 해당 디렉토리에 대한 더 많은 공개 권한 부여를 참조하십시오.