Apache VirtualHost 403 금지


123

최근에 Apache로 테스트 서버를 설정하려고했습니다. 사이트는 도메인 아래에서 실행되어야합니다 www.mytest.com. 항상 403 Forbidden오류가 발생합니다. 저는 Ubuntu 10.10 서버 에디션에 있습니다. 문서 루트는 dir 아래에 /var/www있습니다. 다음은 내 설정입니다.

/ var / www의 내용

ls -l /var/www/

total 12
drwxr-xr-x 2 root root 4096 2011-08-04 11:26 mytest.com
-rwxr-xr-x 1 root root 177 2011-07-25 16:10 index.html

서버의 호스트 파일 내용 (IP 192.168.2.5 사용)

cat /etc/hosts

127.0.0.1 localhost 
127.0.1.1 americano
192.168.2.5 americano.mytest.com www.mytest.com

# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

사이트 구성

<VirtualHost *>
ServerAdmin admin@mytest.com
ServerName www.mytest.com
ServerAlias mytest.com

DocumentRoot "/var/www/mytest.com"

ErrorLog /var/log/apache2/mytest-error_log
CustomLog /var/log/apache2/mytest-access_log combined

#
# This should be changed to whatever you set DocumentRoot to.
#
<Directory "/var/www/mytest.com">
Options -Indexes FollowSymLinks
AllowOverride None

Order allow,deny
Allow from all
</Directory>
</VirtualHost>

.htaccess내 문서 루트에 파일 이 없습니다 . 권한이 올바르게 설정되었습니다 (www-data에서 읽을 수 있음).

데스크탑에서 IP 주소를 입력하면 사이트가 올바르게 표시됩니다. 내 데스크톱의 호스트 파일 www.mytest.com이 서버의 IP 를 가리 키 도록 변경했습니다 . 내가 그것을 사용하면 403. 이 사이트의 많은 기능은 사이트 이름에 민감하기 때문에 도메인 이름으로 사이트에 액세스 할 수 있어야합니다.

또 다른 펑키 한 점은 모든 로그 파일이 제대로 생성 되었더라도이 오류에 대한 정보가 없다는 것입니다.

나는 붙어있다. 아무도 도울 수 있습니까?


: 당신의 콘텐츠를 추가 할 수 있습니다 sudo sh -c ". /etc/apache2/envvars; apache2 -S": (버추얼 호스트 목록)과sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

첫 번째 명령은 다음을 VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK 반환합니다. 두 번째 명령은 다음을 반환합니다. /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Listen 443 /etc/apache2/ports.conf: Listen 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost *
Yuchen Wang 2011-08-05

답변:


296

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>

3
가상 호스트를 사용하여이 문제가 발생하는 경우 apache / conf / extra / httpd-vhosts.conf 파일 내의 각 가상 호스트 설정에 "모두 허가 필요"를 추가해야합니다.
Soundfx4 jul.

1
이 지침을에 추가 /etc/apache2/apache2.conf했으며 도움이되었습니다. 감사합니다!
DmitMedv 2015 년

Soundfx4 @ 어떤라는 폴더가없는 apache/conf/extra내부/etc/apache2
블랙

/var/dev/website.com을 추가했고 403 오류가 발생했습니다. /etc/apache2/apache2.conf (ubuntu)에 제안 된 지시문을 추가하면 트릭이 발생했습니다. 감사합니다!
LoveFineArt

감사합니다. 아파치는 ... 요즘 일이 힘들어입니다
OoDeLally

15

아파치 우분투 2.4.7의 경우 마침내 apache2.conf에서 가상 호스트를 화이트리스트에 추가해야 함을 발견했습니다.

# access here, or in any related virtual host.
<Directory /home/gav/public_html/>
    Options FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

8

권한 문제 일 수 있습니다.

가상 문서 루트에 대한 모든 단일 상위 경로는 웹 서버 httpd 사용자가 읽기, 쓰기 및 실행 가능해야합니다.

Apache 403 오류에 대한 이 페이지 에 따르면 .

을 사용 중이므로 Allow from all주문은 중요하지 않지만로 전환 Deny,Allow하여 기본 동작 을 '허용' 으로 설정할 수 있습니다.


4
쓰기 가능? 정말? 잘 모르겠습니다
php-dev

5

Directory 절을 가상 호스트 밖으로 이동하고 가상 호스트를 선언하기 전에 넣으십시오.

오랫동안 나를 미치게 만들었습니다. 이유를 모릅니다. 데비안 일입니다.


와, 정말 이상해.
kako-nawao 2015


0

모든 것을 올바르게 수행했다면 다음과 같은 권한 홈 디렉토리를 제공하십시오.

sudo chmod o+x $HOME

그때

sudo systemctl restart apache2

0

문제는 파일 접근 권한이 잘못되었다는 것입니다.

나는 디렉토리의 권한을 변경했고 작동했습니다.


0

Arch Linux 에서도이 문제가 발생했습니다 ... 시간이 좀 걸리지 만 실수를 발견하여 행복합니다.

.html계정에 있는 파일이있는 내 디렉토리 .
나는 모든 것을 설정 r+x했지만 여전히 403오류가 있습니다.
나는 완전히 돌아가서 내 문제를 해결 하기 위해홈 디렉토리실행 하려고 시도했습니다 .


-1

이 어리석은 문제에 몇 시간을 보냈습니다.

먼저 터미널에서 이것을 사용하여 권한을 변경하십시오.

find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +

나는 664와 775의 차이점이 무엇인지 모르겠습니다. 이렇게 775를 모두 수행했습니다. 또한 htdocs에는 예를 들어 디렉토리 경로가 필요합니다.

/usr/local/apache2/htdocs 

find htdocs -type f -exec chmod 775 {} + -o -type d -exec chmod 775 {} +

이건 또 다른 바보 야

이미지 src 링크가 도메인 이름인지 확인하십시오.

src="http://www.fakedomain.com/images/photo.png"

가지고 있어야합니다

EnableSendfile off in httpd.conf file
EnableMMAP off in httpd.conf file

터미널에서 pico를 사용하여 편집합니다.

또한 브라우저 주소 표시 줄 domainname.com/images에 입력 할 때 다운로드 할 수있는 사진 목록을 얻고 제대로 작동하는 이미지 파일을 나타 내기 위해 성공적으로 다운로드해야하는 이미지 용 디렉토리도 만들었습니다.

<Directory /usr/local/apache2/htdocs/images>
AddType images/png .png
</Directory>

그리고 그것들은 내가 시도한 해결책입니다. 이제 나는 작동하는 이미지를 가지고 있습니다 ... yay !!!

다음 문제로

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.