Apache VirtualHost 403 Proibido

123

Recentemente, tentei configurar um servidor de teste com o Apache. O site deve ser executado no domínio www.mytest.com. Eu sempre recebo um 403 Forbiddenerro. Estou no Ubuntu 10.10 server edition. A raiz do documento está sob dir /var/www. A seguir estão as minhas configurações:

Conteúdo de / 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

Conteúdo do arquivo host no servidor (com 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

Configuração do site

<VirtualHost *>
ServerAdmin [email protected]
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>

Não tenho nenhum .htaccessarquivo na raiz do meu documento. As permissões estão definidas corretamente (legíveis por www-data).

Se eu digitar o endereço IP da minha área de trabalho, o site será exibido corretamente. Alterei o arquivo hosts na minha área de trabalho para apontar www.mytest.compara o IP do servidor. Quando eu uso, eu entendo 403. Como muitas funções deste site são sensíveis ao nome de site, eu tenho que poder acessar o site pelo nome de domínio.

Outra coisa interessante é que, mesmo que todos os arquivos de log sejam criados corretamente, eles não têm informações sobre esse erro.

Estou preso. Alguém pode ajudar?

Yuchen Wang
fonte
você pode adicionar o conteúdo de: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(lista de Virtualhosts) e:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero
O primeiro comando retorna o seguinte: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK O segundo retorna: /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 5/08
1
tente em serverfault.com
regilero

Respostas:

296

O Apache 2.4.3 (ou talvez um pouco antes) adicionou um novo recurso de segurança que geralmente resulta nesse erro. Você também veria uma mensagem de log do formulário "cliente negado pela configuração do servidor". O recurso está exigindo uma identidade de usuário para acessar um diretório. É ativado por DEFAULT no httpd.conf que acompanha o Apache. Você pode ver a ativação do recurso com a diretiva

Require all denied

Basicamente, isso significa negar acesso a todos os usuários. Para corrigir esse problema, remova a diretiva negada (ou muito melhor) adicione a seguinte diretiva aos diretórios aos quais você deseja conceder acesso:

Require all granted

como em

<Directory "your directory here">
   Order allow,deny
   Allow from all
   # New directive needed in Apache 2.4.3: 
   Require all granted
</Directory>
Phil L
fonte
3
Gostaria de observar que, se você estiver tendo esse problema ao usar hosts virtuais, precisará adicionar o "Exigir tudo concedido" a cada configuração de host virtual dentro do arquivo apache / conf / extra / httpd-vhosts.conf.
Soundfx4
1
Eu adicionei esta diretiva /etc/apache2/apache2.confe ajudou, obrigado!
DmitMedv 26/09/2015
@ Soundfx4, não há nenhuma pasta chamada apache/conf/extradentro/etc/apache2
preto
Eu adicionei /var/dev/website.com e estava recebendo um erro 403. Adicionar a diretiva sugerida ao /etc/apache2/apache2.conf (ubuntu) fez o truque. Obrigado rapazes!
LoveFineArt
Obrigado senhor. Apache é cada vez mais difícil ter a trabalhar nos dias de hoje ...
OoDeLally
15

Para o apache Ubuntu 2.4.7, finalmente achei que você precisava listar seu host virtual em apache2.conf

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

Isso pode ser um problema de permissão.

todo caminho pai único para a raiz do documento virtual deve ser legível, gravável e executável pelo usuário httpd do servidor da web

de acordo com esta página sobre erros do Apache 403.

Como você está usando Allow from all, seu pedido não deve importar, mas você pode tentar alterá-lo Deny,Allowpara definir o comportamento padrão como "permitindo".

Pops
fonte
4
Gravável? realmente? Não tenho certeza
php-dev
5

Mova a cláusula Directory para fora do host virtual e coloque-a antes de declarar o host virtual.

Também me deixou louco por muito tempo. Não sei porque. É uma coisa do Debian.

samtresler
fonte
Uau, isso é tão estranho.
Kako-nawao
0

Se você fez tudo certo, basta dar o diretório inicial de permissões como:

sudo chmod o+x $HOME

então

sudo systemctl restart apache2
cagcak
fonte
0

O problema era que a permissão de acesso ao arquivo estava errada.

Mudei as permissões do diretório e funcionou.

Sebastian Viereck
fonte
0

Também tive esse problema no Arch Linux ... me custa algum tempo, mas estou feliz agora que encontrei o meu erro:

Meu diretório com os .htmlarquivos na minha conta.
Eu configurei tudo, r+xmas ainda recebi o 403erro.
Depois voltei completamente e tentei configurar o diretório home para executar o que resolveu o meu problema.

TornaxO7
fonte
-1

Passei várias horas nesse problema estúpido

Primeiro, altere as permissões usando isso no terminal

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

Eu não sei qual é a diferença entre 664 e 775 Eu fiz ambos os 775 como este Também o htdocs precisa do caminho do diretório, por exemplo, para mim foi

/usr/local/apache2/htdocs 

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

Essa é a outra coisa idiota também

verifique se o link src da imagem é o seu nome de domínio, por exemplo

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

Certifique-se de ter

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

Você edita aqueles que usam pico no terminal

Também criei um diretório para imagens especificamente, para que, quando você digitar na barra de endereço do domínio domainname.com/images, obtenha uma lista de fotos que podem ser baixadas e que precisam ser baixadas com sucesso para indicar que os arquivos de imagem estão funcionando corretamente

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

E essas são as soluções que tentei, agora tenho imagens em funcionamento ... sim !!!

Para o próximo problema (s)

Jacob David C. Cunningham
fonte