아파치 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에서 구성을 확인해야 합니다.
<디렉터리 "/usr/local/site/test">는 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'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이 계속 나타나면 디렉터리 구성 <디렉터리 "/usr/local/site/test">에 Deny from all이 있는지 확인하세요. 그렇지 않으면 모든 액세스가 거부됩니다(물론 403).
모두 허용 또는 처리에 모두 허용하도록 설정할 수 있습니다.
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
해결 방법:
모두 허용에서 <디렉터리 /srv/lxyproject/wsgi/> 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!