Apache: cliente negado pela configuração do servidor


150

estou obtendo

[Terça-feira, 24 de abril, 12:12:55 2012] [erro] [cliente 127.0.0.1] cliente negado pela configuração do servidor: / labs / Projects / Nebula / bin /

Minha estrutura de diretórios é semelhante (estou usando o Symfony 2, deve ser uma estrutura semelhante para outras estruturas da web)

insira a descrição da imagem aqui

Tenho vhosts configurados como:

<VirtualHost nebula:80>
    DocumentRoot "/labs/Projects/Nebula/web/"
    ServerName nebula
    ErrorLog "/var/log/httpd/nebula-errors.log"
</VirtualHost>

<Directory "/labs/Projects/Nebula/">
    Options All
    AllowOverride All
    Order allow,deny
    Allow from 127.0.0 192.168.1 ::1 localhost
</Directory>

Gostaria de saber qual é o problema e como solucioná-lo?


1
@JiewMeng: Você provavelmente deve aceitar a resposta de Phil. Parece ser o problema com a maioria das instalações do Apache atualmente (Apache 2.4). Obrigado.
dotancohen

Respostas:


396

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 autorizada 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>

9
também pode ser necessário adicionar Satisfy Anyapós oRequire all granted
MarkHu

@ MarkHu - você pode explicar a possível necessidade de Satisfy anyneste contexto? Estou perguntando porque estava puxando meu cabelo aqui e, adicionando isso, tudo funcionou para mim. O estranho é que o aplicativo estava trabalhando com a entrada vhost existente até uma atualização recente do Apache para 2.4.9. Mais estranho de novo, é que está funcionando bem em outro servidor com as mesmas versões app / vhost e Apache / PHP. Porém, servidores diferentes - AWS Linux e Ubuntu 14.10, respectivamente. Estranho ... Eu acho que preciso para comparar de cada servidor httpd.confde arquivos para ver se há uma diferença de configuração lá ...
Darragh Enright

Também verifique o seu htaccessno caminho que você está tentando acessar
Ujjwal Singh

Meu ambiente não estava funcionando até que eu decidi ir com a solução @MarkHu Satisfy Any. Obrigado!!!
Neonigma

mesmo depois de alterar para exigir todos os direitos concedidos, está mostrando o mesmo erro Acesso negado.
precisa

10

OK, eu estou usando a sintaxe errada, eu deveria estar usando

Allow from 127.0.0.1
Allow from ::1
...

1
Para o apache> 2.4, isso por si só não poderia funcionar para mim. Mas funcionou quando combinado com Require all granted, como sugerido por @ Phil-L
Mugoma J. Okomba

5

No Apache 2.4, a sintaxe antiga de autorização de acesso foi preterida e substituída por um novo sistema usando o Require .

O que você deseja então é algo como o seguinte:

<Directory "/labs/Projects/Nebula/">
  Options All
  AllowOverride All
  <RequireAny>
    Require local
    Require ip 192.168.1
  </RequireAny>
</Directory>

Isso permitirá conexões que originam quer a partir do host local ou de endereços IP que começam com "192.168.1".

Há também um novo módulo disponível que faz o Apache 2.4 reconhecer a sintaxe antiga, se você não deseja atualizar sua configuração imediatamente:

sudo a2enmod access_compat

1

Você pode tentar alterar "Permitir de 127.0.0 192.168.1 :: 1 localhost" para "Permitir de todos". Se isso resolver o seu problema, você precisará ter menos restrições sobre onde o conteúdo pode ser solicitado


1

Aqui está o meu arquivo host virtual symfony 1.4 no debian, que funciona bem.

  <Directory /var/www/sf_project/web/>
    Options All Indexes FollowSymLinks    
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>

Se você não deseja restringir o acesso a um intervalo de IP específico, por exemplo, localhost use isto:

Allow from 127.0.0.0/8

O mod_authz_host é responsável por filtrar os intervalos de IP. Você pode procurar coisas detalhadas lá.

Mas talvez o problema possa estar relacionado a algum tipo de configuração incorreta no seu "apache2.conf".

Em qual SO o apache está sendo executado?


1

se você está tendo o

Allow from All

no httpd.conf, verifique se temos

index.php

como na linha abaixo em httpd.conf

DirectoryIndex index.html index.php

1

Eu tive esse problema usando o Vesta CP e, para mim, o truque foi remover .htaccess e tentar acessar qualquer arquivo novamente.

Isso resultou na regeneração do arquivo .htaccess e, em seguida, consegui acessar meus arquivos.



-3

Este código funcionou para mim ..

 <Location />
Allow from all
Order Deny,Allow
</Location> 

Espero que isso ajude outras pessoas


1
Isso absolutamente não deve ser incentivado a adicionar em uma configuração apache.
Ricky Mutschlechner

Isso permite que o apache acesse todos os arquivos no computador. Muito ruim para segurança.
Deleet
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.