2012-04-27 13 views
146

estoy recibiendoApache: cliente negada por la configuración del servidor

[Mar Abr 24 de 2012 12:12:55] [error] [127.0.0.1] cliente cliente negada por la configuración del servidor:/laboratorios/Proyectos/nebulosa/bin/

Mi estructura de directorios se parece a (estoy usando Symfony 2, debe ser una estructura similar para otros frameworks web)

enter image description here

He fijado con dominios virtuales 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> 

Me pregunto cuál es el problema y cómo puedo solucionarlo?

+1

@JiewMeng: Probablemente deberías aceptar la respuesta de Phil. Parece ser el problema con _most_ las instalaciones de Apache hoy (Apache 2.4). Gracias. – dotancohen

Respuesta

11

OK estoy usando la sintaxis incorrecta, que debería usar

Allow from 127.0.0.1 
Allow from ::1 
... 
+0

Para Apache> 2.4 esto solo no podría funcionar para mí. Pero funcionó cuando se combinó con 'Requerir todos los concedidos', según lo sugerido por @ Phil-L –

1

Puede intentar cambiar "Permitir desde 127.0.0 192.168.1 :: 1 localhost" a "Permitir de todos". Si se soluciona el problema, tiene que ser menos restringir acerca de dónde contenido puede ser solicitada a

1

Aquí está mi Symfony 1.4 archivo de host virtual en Debian, que funciona bien.

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

Si quiere restringir el acceso a un rango de ip específico, p. localhost utilizar este:

Allow from 127.0.0.0/8 

El mod_authz_host es responsable de rangos de filtrado de IP. Puedes buscar cosas detalladas allí.

Pero tal vez el problema podría estar relacionado con algún tipo de configuración incorrecta en su "apache2.conf".

¿En qué sistema operativo se ejecuta Apache?

389

Apache 2.4.3 (o tal vez un poco antes) agregó una nueva característica de seguridad que a menudo resulta en este error. También vería un mensaje de registro del formulario "cliente denegado por la configuración del servidor". La función requiere una identidad de usuario autorizada para acceder a un directorio. Está activado por DEFAULT en el httpd.conf que se envía con Apache. Se puede ver la habilitación de la función con la directiva

Require all denied 

Esto básicamente significa denegar el acceso a todos los usuarios. Para solucionar este problema, quite la directiva denegado (o mucho mejor) añada la siguiente directiva a los directorios que desea conceder acceso a:

Require all granted 

como en

<Directory "your directory here"> 
    Order allow,deny 
    Allow from all 
    # New directive needed in Apache 2.4.3: 
    Require all granted 
</Directory> 
+2

Ver también: http://httpd.apache.org/docs/current/upgrading.html#access –

+8

también podría necesitar agregar' Satisfy Cualquier 'después de' Requerir todo concedido' – MarkHu

+0

@MarkHu - ¿puede explicar la posible necesidad de 'Satisfy any' en este contexto? Pregunto porque estaba tirando de mi cabello aquí, y agregando esto, todo funcionó para mí. Lo curioso es que la aplicación estaba trabajando con la entrada existente de vhost hasta que una actualización reciente de Apache a '2.4.9'. Más raro de nuevo, es que está funcionando bien en otro servidor con la misma aplicación/vhost y versiones de Apache/PHP. Diferentes servidores: AWS Linux y Ubuntu 14.10 respectivamente. Extraño ... supongo que necesito comparar los archivos 'httpd.conf' de cada servidor para ver si hay una diferencia de configuración allí ... –

1

si va a ser el

Allow from All 

en httpd.conf continuación, asegúrese de nosotros tenemos

índice.php

al igual que en la línea de abajo en httpd.conf

DirectoryIndex index.html index.php 
0

En mi caso, la clave fue:

AllowOverride All 

en la definición de host virtual. Espero que ayude a alguien.

4

En Apache 2.4, la sintaxis de autorización de acceso anterior ha quedado en desuso y reemplazada por un nuevo sistema que usa Requiere.

Lo que se quiere es, pues, algo así como lo siguiente:

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

Esto permitirá conexiones que se originan ya sea desde el host local o de direcciones IP que comienzan con "192.168.1".

También hay un nuevo módulo de disposición que hace Apache 2.4 reconoce la sintaxis de edad si no desea actualizar la configuración de inmediato:

sudo a2enmod access_compat 
-3

Este código funcionó para mí ..

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

Esperamos que esto ayude a otros

+1

Esto no debe ser animado para agregarlo a una configuración de Apache. –

+0

Esto le permite a apache acceder a todos los archivos de la computadora. Muy malo para la seguridad. – Deleet

1

tuve este problema utilizando Vesta CP y para mí, el truco era eliminar .htaccess e intente acceder a cualquier archivo nuevo.

Esto dio como resultado la regeneración del archivo .htaccess y luego pude acceder a mis archivos.

Cuestiones relacionadas