>  기사  >  운영 및 유지보수  >  Apache 403 금지를 해결하는 방법

Apache 403 금지를 해결하는 방법

藏色散人
藏色散人원래의
2019-12-16 14:34:174214검색

Apache 403 금지를 해결하는 방법

아파치 403 금지를 해결하는 방법은 무엇입니까?

Apache httpd 서버 403 금지 문제

1. 문제 설명

apache2의 httpd 구성에서는 403이 여러 상황에서 나타납니다.

httpd 서비스를 방금 설치했다면 물론 403 문제는 없을 것입니다. 주로 일부 구성을 수정한 후에 발생했습니다.

DocumentRoot 디렉터리 포인팅을 수정한 후 사이트에서 403 오류가 발생했습니다.

가상 호스트 디렉터리를 설정하면 403이 발생할 수도 있습니다.

Apache의 httpd 서비스가 성공적으로 시작되었습니다. 정상적으로 보이지만 액세스 권한이 없습니다.

검색 권한이 없기 때문에 액세스/거부됨(파일 시스템 경로) 경로의 구성 요소에

가상 디렉터리를 설정한 후 오류 로그가 나타납니다. 클라이언트가 서버 구성에 의해 거부됨: /srv/lxyproject/wsgi/django.wsgi

2. 문제 및 해결 방법을 분석하세요

아래의 단계별로 문제를 해결하십시오. 오류 로그 내용에 주의하십시오. 좋아요, 시작해 보세요.

1. httpd.conf의 디렉터리 구성 파일

예를 들어 DocumentRoot가 변경된 것으로 표시되면 "/usr/local/site/test"로 변경됩니다. mkdir을 이용하여 사이트 디렉터리와 테스트 디렉터리를 생성하고, 테스트 디렉터리 아래에 index.html을 생성합니다. 이 경우 httpd.conf에서 구성을 확인해야 합니다.

90174236af2e67011dc4b3b5a76d84bc는 DocumentRoot와 일치해야 합니다. 왜냐하면 이 디렉터리는 해당 디렉터리에 대한 Apache의 액세스 권한 설정이기 때문입니다. DocumentRoot는 올바른 디렉터리가 설정된 경우에만 적용됩니다.

<Directory "/usr/local/site/test">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn&#39;t give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
    AllowOverride None
    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

2. 디렉터리 액세스 권한

첫 번째 단계가 올바르게 구성되었는데도 403이 계속 나타나면 디렉터리 구성 90174236af2e67011dc4b3b5a76d84bc에 Deny from all이 있는지 확인하세요. 그렇지 않으면 모든 액세스가 거부됩니다(물론 403).

모두 허용 또는 처리에 모두 허용하도록 설정할 수 있습니다.

7d50add1c973852b0a9343a1c5b78333의 루트 디렉터리에서 Deny를 모두 수정하지 마세요.

3. 디렉토리 권한

여전히 403이라면 웹사이트 디렉토리의 권한 문제일 수 있습니다.

apache에는 x라는 실행 권한이 있는 디렉토리가 필요합니다. 디렉토리 트리에는 이러한 권한이 있어야 합니다.

디렉토리가 /usr/local/site/test인 경우 /usr, /usr/local, /usr/local/site 및 /usr/local/site/test의 네 가지 수준에 있는 디렉터리를 확인하세요. 모두 755 권한입니다.

#chmod 755 /usr/local/site
#chmod 755 /usr/local/site/test

제가 저지른 실수는 마지막 수준 디렉터리 권한만 설정하고 상위 수준 디렉터리 권한은 설정하지 않아 403이 발생한 것입니다.

4. 가상 디렉터리

[이런 문제를 겪은 적이 없습니다. 온라인 정보에 따르면 참고로 사용할 수 있습니다.]

가상 디렉터리를 설정하면 httpd.conf에서 설정해야 합니다. 다음 스니펫과 같은 가상 디렉터리를 정의합니다.

Alias /folder "/usr/local/folder"                       
<Directory "/usr/local/folder">                         
    Options FollowSymLinks                            
    AllowOverride None                              
    Order deny,allow                               
    Deny from all                                 
    Allow from 127.0.0.1 192.168.1.1                       
</Directory>

이 경우에 위의 내 코드와 비슷한 코드를 작성하고 세 폴더가 동일하면 분명히 다음과 같습니다. 403! 해결 방법은 Alias ​​뒤의 슬래시 뒤의 문자열을 가상 디렉터리의 폴더와 이름이 같지 않은 것으로 변경하는 것입니다. 그러면 변경된 가상 디렉터리를 사용하여 액세스할 수 있습니다. 문제를 두려워하지 않고 별칭 뒤의 가상 디렉터리 정의 문자(빨간색)와 실제 폴더 이름(검은색)이 다르면 폴더도 괜찮습니다.

5. Selinux 문제

계속 403이면 selinux가 문제를 일으키는 것이므로 디렉터리에 selinux 권한을 설정하면 됩니다.

오늘 이 문제가 발생했습니다.

#chcon -R -t httpd_sys_content_t /usr/local/site
#chcon -R -t httpd_sys_content_t /usr/local/site/test

온라인 정보에 따르면 대부분의 경우 이 단계는 발생하지 않습니다. 하지만 내 문제는 그것이 시스템과 관련이 있을 수 있다는 것이고, 구체적인 원리를 잘 이해하지 못한다는 것이다.

6. wsgi 관련 문제

내 가상 호스트 구성은

<VirtualHost *:80>
WSGIScriptAlias / /srv/lxyproject/wsgi/django.wsgi
Alias /static/ /srv/lxyproject/collectedstatic/
ServerName 10.1.101.31
#ServerName example.com
#ServerAlias www.example.com
<Directory /srv/lxyproject/collectedstatic>
  Options Indexes  FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<Directory /srv/lxyproject/wsgi/>
    Allow from all
</Directory>
ErrorLog   /etc/httpd/logs/lxyproject.error.log
LogLevel warn
</VirtualHost>

로그 오류:

client denied by server configuration: /srv/lxyproject/wsgi/django.wsgi

해결 방법:

모두 허용에서 b1bf500300aeae515d6d3aef7c78ea87 is: 모든 권한이 필요합니다.

이 문제는 버전으로 인해 발생합니다.

내 httpd 버전은

[root@yl-web conf.d]# rpm -qa |grep httpd
httpd-devel-2.4.6-31.el7.centos.x86_64
httpd-tools-2.4.6-31.el7.centos.x86_64
httpd-2.4.6-31.el7.centos.x86_64

2.3 미만 버전의 경우 모두 허용을 사용하고, 2.3 이상 버전의 경우 모두 허용을 사용합니다.

아아아아

위 내용은 Apache 403 금지를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.