Apache VirtualHost 403 Prohibido


123

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

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

No tengo ningún .htaccessarchivo en mi raíz de documento. Los permisos están configurados correctamente (legible por www-data).

Si escribo la dirección IP desde mi escritorio, el sitio se muestra correctamente. Cambié el archivo de hosts en mi escritorio para apuntar www.mytest.coma la IP del servidor. Cuando lo uso, me sale 403. Dado que muchas funciones de este sitio son sensibles al nombre del sitio, tengo que poder acceder al sitio por el nombre de dominio.

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

Estoy atascado. ¿Alguien puede ayudar?


¿puede agregar el contenido de: sudo sh -c ". /etc/apache2/envvars; apache2 -S"(lista de Virtualhosts) y:sudo sh -c ". /etc/apache2/envvars; grep -R Listen /etc/apache2/*|grep -v \"#\"; grep -R NameVirtual /etc/apache2/*|grep -v \"#\""
regilero

El primer comando regresa a continuación: VirtualHost configuration: 192.168.2.5:* www.mytest.com (/etc/apache2/sites-enabled/mytest.com:1) Syntax OK El segundo regresa: /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

1
probar en serverfault.com
regilero

Respuestas:


296

Apache 2.4.3 (o quizás un poco antes) agregó una nueva característica de seguridad que a menudo resulta en este error. También verá un mensaje de registro con la forma "cliente denegado por la configuración del servidor". La función requiere una identidad de usuario para acceder a un directorio. DEFAULT lo activa en httpd.conf que se incluye 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, elimine la directiva denegada (o mucho mejor) agregue la siguiente directiva a los directorios a los que desea otorgar acceso:

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
Me gustaría señalar 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

1
He agregado esta directiva /etc/apache2/apache2.confy me ayudó, ¡gracias!
DmitMedv

@ Soundfx4, no hay una carpeta llamada apache/conf/extradentro/etc/apache2
Negro

Agregué /var/dev/website.com y recibí un error 403. Agregar la directiva sugerida a /etc/apache2/apache2.conf (ubuntu) hizo el truco. ¡Gracias chicos!
LoveFineArt

Gracias Señor. Apache es cada vez más difícil trabajar en estos días ...
OoDeLally

15

Para Apache Ubuntu 2.4.7, finalmente descubrí que necesita incluir en la lista blanca su host 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>

8

Esto puede ser un problema de permisos.

cada ruta principal a la raíz del documento virtual debe ser legible, escribible y ejecutable por el usuario httpd del servidor web

de acuerdo con esta página sobre los errores Apache 403.

Como está utilizando Allow from all, su orden no debería importar, pero puede intentar cambiarlo Deny,Allowpara establecer el comportamiento predeterminado en "permitir".


44
Escribible? ¿De Verdad? No estoy seguro
php-dev

5

Mueva la cláusula Directory fuera del host virtual y póngala antes de declarar el host virtual.

También me volví loco por mucho tiempo. No se porque. Es una cosa de Debian.


Woah, eso es muy raro.
kako-nawao


0

Si hiciste todo bien, solo da el permiso al directorio de inicio como:

sudo chmod o+x $HOME

luego

sudo systemctl restart apache2

0

El problema era que el permiso de acceso al archivo era incorrecto.

Cambié los permisos del directorio y funcionó.


0

También tuve este problema en Arch Linux ... me cuesta algo de tiempo, pero estoy feliz de haber encontrado mi error:

Mi directorio con los .htmlarchivos en mi cuenta.
Configuré todo r+xpero aún recibí el 403error.
Luego volví completamente e intenté configurar mi directorio de inicio para que se ejecutara, lo que resolvió mi problema.


-1

Acabo de pasar varias horas en este estúpido problema

Primero, cambie los permisos usando esto en la terminal

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 ambos 775 de esta manera 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 {} +

Esta es la otra cosa tonta también

asegúrese de que su enlace src de imagen sea su nombre de dominio, por ejemplo

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

Asegúrate de tener

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

Editas los que usan pico en la terminal

También creé un directorio para imágenes específicamente para que cuando escriba la barra de direcciones del navegador domainname.com/images, obtenga una lista de fotos que se pueden descargar y deben descargarse correctamente para indicar que los archivos de imágenes funcionan correctamente

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

Y esas son las soluciones que he probado, ahora tengo imágenes que funcionan ...

Sobre el (los) siguiente (s) problema (s)

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.