2011-08-05 12 views
94

Hace poco intenté configurar un servidor de prueba con Apache. El sitio debe ejecutarse bajo el dominio www.mytest.com. Siempre recibo un error 403 Forbidden. Estoy en la versión del servidor Ubuntu 10.10. La raíz del documento está bajo dir /var/www. Los siguientes son mis ajustes:Apache VirtualHost 403 Forbidden

contenido 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 

contenido del archivo host en el servidor (con 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 

Configuración del sitio

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

No tengo ningún archivo .htaccess en mi raíz de documento. Los permisos están establecidos correctamente (legibles por www-data).

Si yo escriba la dirección IP de mi escritorio, el sitio se muestra correctamente. Cambié el archivo de hosts en mi escritorio para señalar www.mytest.com a la IP del servidor. Cuando lo uso, obtengo 403. Dado que muchas funciones de este sitio son sensibles al sitio, tengo que poder acceder al sitio por el nombre de dominio.

Otra cosa funky es que, incluso si todos los archivos de registro se crean correctamente, no tienen información sobre este error.

Estoy atascado. ¿Alguien puede ayudar?

+0

se puede añadir el contenido de: 'sudo sh -c"./etc/apache2/envvars; apache2 -S "' (lista de Virtualhosts) y: 'sudo sh -c"./ etc/apache2/envvars; grep -R Escuchar/etc/apache2/* | grep -v \ "# \"; grep -R NameVirtual/etc/apache2/* | grep -v \ "# \"" ' – regilero

+0

Los primeros comando devuelve la siguiente: 'configuración VirtualHost: 192.168.2.5:* www.mytest.com (/ etc/apache2/sites-enabled/mytest.com: 1) sintaxis OK ' El segundo devuelve: ' /etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Escucha 443 /etc/apache2/ports.conf: Escuchar 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost * ' –

+1

probar en http://serverfault.com/ – regilero

Respuesta

242

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 para acceder a un directorio. Está activado por DEFAULT en el httpd.conf que se envía con Apache. Puede ver la habilitación de la función con la directiva

Require all denied 

Esto básicamente dice que 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> 
+3

I wo A usted le gustaría tener en cuenta que si tiene este problema al usar hosts virtuales, deberá agregar el "Requerir todo otorgado" a cada configuración de host virtual dentro del archivo apache/conf/extra/httpd-vhosts.conf. – Soundfx4

+0

He añadido esta directiva a '/ etc/apache2/apache2.conf' y ha ayudado, ¡gracias! – DmitMedv

+0

@ Soundfx4, no hay una carpeta llamada 'apache/conf/extra' dentro de'/etc/apache2' – Black

8

Esto puede ser un problema de permisos.

cada ruta padre solo a la raíz del documento virtual debe ser de lectura, escritura y ejecutable por el usuario httpd servidor web

acuerdo con this page sobre Apache 403 errores.

Dado que está utilizando Allow from all, su pedido no debería importar, pero puede intentar cambiarlo a Deny,Allow para configurar el default behavior en "permitir".

+4

¿Escribir? Realmente? No estoy seguro –

4

Mover la cláusula Directorio del host virtual, y la puso antes de declarar el host virtual.

me llevó frutos secos durante mucho tiempo también. No sé por qué. Es algo de Debian.

+0

Woah, eso es tan raro. –

0

mi problema era que, el permiso de acceso a archivos que estaba mal, he cambiado los permisos del directorio y funcionó para mí

10

para Apache Ubuntu 2.4.7, finalmente encontré lo que necesita a la lista blanca de su máquina virtual en apache2.conf

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

Acabo de pasar varias horas en este estúpido problema

permisos En primer lugar, el cambio en el uso de esta terminal de

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

No sé cuál es la diferencia entre 664 y 775 hice tanto 775 como esto también htdocs necesita la ruta del directorio, por ejemplo, para mí fue

/usr/local/apache2/htdocs 

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

esto es la otra cosa tonta demasiado

asegúrese de que el vínculo de la imagen src es su nombre de dominio, por ejemplo,

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

estar seguro de tener

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

edita los que utilizan pico en el terminal

También creé un directorio para imágenes específicamente para que cuando ingresas la barra de direcciones del navegador domainname.com/images, obtengas una lista de fotos que se puedan descargar y necesitar ser descargado con éxito para indicar archivos de imagen que funcionan correctamente

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

Y esas son las soluciones que he probado, ahora he funcionando imágenes ... yay !!!

a la siguiente problema (s)

0

Si hiciste todo bien, solo da e el directorio principal permiso como:

sudo chmod o+x $HOME 

continuación

sudo systemctl restart apache2 
Cuestiones relacionadas