2011-08-05 4 views
94

J'ai récemment essayé de configurer un serveur de test avec Apache. Le site doit fonctionner sous le domaine www.mytest.com. J'obtiens toujours une erreur . Je suis sur l'édition du serveur Ubuntu 10.10. La racine doc est sous la dir /var/www. Voici mes paramètres:Apache VirtualHost 403 Interdit

Contenu 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 

Contenu du fichier hôte sur le serveur (avec 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 

Site config

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

Je n'ai pas de fichier .htaccess dans ma racine de doc. Les permissions sont définies correctement (lisibles par www-data).

Si je tape l'adresse IP sur mon bureau, le site s'affiche correctement. J'ai changé le fichier hosts sur mon bureau pour pointer www.mytest.com vers l'adresse IP du serveur. Quand je l'utilise, je reçois 403. Puisque de nombreuses fonctions de ce site sont sensibles au nom du site, je dois pouvoir accéder au site par le nom de domaine.

Une autre chose géniale est, même si tous les fichiers journaux sont créés correctement, ils n'ont aucune information concernant cette erreur.

Je suis coincé. Quelqu'un peut-il aider?

+0

pouvez-vous ajouter le contenu de: 'sudo sh -c »./etc/apache2/envvars; apache2 -S "' (liste des hôtes virtuels) et: 'sudo sh -c"./ etc/apache2/envvars; grep -R Ecoute/etc/apache2/* | grep -v \ "# \"; grep -R NameVirtual/etc/apache2/* | grep -v \ "# \" " ' – regilero

+0

La première commande renvoie: 'Configuration VirtualHost: 192.168.2.5:* www.mytest.com (/ etc/apache2/sites-enabled/mytest.com: 1) Syntaxe OK' Le second renvoie: '/etc/apache2/ports.conf:Listen 80 /etc/apache2/ports.conf: Écouter 443 /etc/apache2/ports.conf: Écouter 443 /etc/apache2/conf.d/virtual.conf:NameVirtualHost * ' –

+1

essayer sur http://serverfault.com/ – regilero

Répondre

242

Apache 2.4.3 (ou peut-être légèrement plus tôt) a ajouté une nouvelle fonctionnalité de sécurité qui entraîne souvent cette erreur. Vous verrez également un message de journal du formulaire "client refusé par la configuration du serveur". La fonctionnalité requiert une identité d'utilisateur pour accéder à un répertoire. Il est activé par DEFAULT dans le fichier httpd.conf fourni avec Apache. Vous pouvez voir l'activation de la fonctionnalité avec la directive

Require all denied 

Cela signifie essentiellement de refuser l'accès à tous les utilisateurs.Pour résoudre ce problème, supprimez la directive refusé (ou beaucoup mieux) ajouter la directive suivante aux répertoires que vous souhaitez accorder l'accès à:

Require all granted 

comme dans

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

Je ne sais pas Nous aimerions noter que si vous rencontrez ce problème en utilisant des hôtes virtuels, vous devrez ajouter "Exiger tout ce qui est accordé" à chaque paramètre d'hôte virtuel dans le fichier apache/conf/extra/httpd-vhosts.conf. – Soundfx4

+0

J'ai ajouté cette directive à '/ etc/apache2/apache2.conf' et cela m'a aidé, merci! – DmitMedv

+0

@ Soundfx4, il n'y a pas de dossier appelé 'apache/conf/extra' dans'/etc/apache2' – Black

8

Cela peut être un problème de permissions.

chaque chemin parent seul à la racine du document virtuel doit être lisible, inscriptible et par le serveur Executable Web httpd utilisateur

selon this page sur les erreurs Apache 403.

Étant donné que vous utilisez Allow from all, votre commande ne devrait pas avoir d'importance, mais vous pouvez essayer de la remplacer par Deny,Allow pour définir le default behavior sur "Autoriser".

+4

Lecture en écriture? vraiment? je ne suis pas sûr –

4

Déplacez la clause Directory de l'hôte virtuel et placez-la avant de déclarer l'hôte virtuel.

M'a rendu fou pour une longue période aussi. Je ne sais pas pourquoi. C'est une chose Debian.

+0

Woah, c'est tellement bizarre –

0

mon problème était que l'autorisation d'accès de fichier a eu tort, j'ai changé les permissions du répertoire et cela a fonctionné pour moi

10

pour apache Ubuntu 2.4.7, je trouve enfin vous avez besoin à la liste blanche de votre hôte virtuel dans apache2.conf

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

Je viens de passer plusieurs heures sur ce problème stupide

autorisations Tout d'abord, le changement en utilisant ce dans le terminal

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

Je ne sais pas ce que la différence se situe entre 664 et 775 je l'ai fait à la fois 775 comme celui-ci également htdocs a besoin le chemin du répertoire, par exemple, pour moi, il était

/usr/local/apache2/htdocs 

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

C'est l'autre chose stupide trop

assurez-vous que votre image lien src est votre nom de domaine par exemple

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

Assurez-vous d'avoir

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

Vous modifier ceux qui utilisent pico dans le terminal

J'ai également créé un répertoire pour les images spécifiquement de sorte que lorsque vous tapez dans la barre d'adresse du navigateur domainname.com/images, vous obtiendrez une liste de photos qui peuvent être téléchargées et doivent être téléchargé avec succès pour indiquer les fichiers d'image qui fonctionnent correctement

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

Et ce sont les solutions que j'ai essayé, maintenant j'ai des images qui fonctionne ... youpi !!!

Sur le problème suivant (s)

0

Si vous avez tout fait correctement, e le répertoire d'autorisation comme:

sudo chmod o+x $HOME 

puis

sudo systemctl restart apache2