web-dev-qa-db-fra.com

Comment désactiver la racine de document par défaut dans Apache?

J'héberge des sites Web sur mon serveur exécutant Apache Httpd. Chaque site Web a son propre domaine ou sous-domaine et hôte virtuel. Par conséquent, je n'ai besoin d'aucune racine de document par défaut. Est-il possible de désactiver DocumentRoot dans /etc/httpd/conf/httpd.conf?

13
danijar

Merci pour les autres réponses. Je l'ai résolu en ajoutant un hôte virtuel par défaut sans aucune autorisation. Les options globales DocumentRoot et ServerName doivent correspondre à celles spécifiées dans l'hôte virtuel.

/ etc/httpd/conf/httpd.conf

...
ServerName <server-ip>:80

DocumentRoot "/var/www/html"

<Directory />
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>
...

/ etc/httpd/conf.d/default.conf

<VirtualHost *:80>
        ServerName <server-ip>
        DocumentRoot /var/www/html
</VirtualHost>

De cette façon, j'obtiens un message interdit 403 lorsque le serveur est accédé directement par son ip, ce qui est exactement ce que je voulais. Ce serait encore mieux si je n'avais pas besoin de /var/www/html un répertoire existant pour cela, mais Apache se plaint si je spécifie quelque chose comme /dev/null au lieu.

10
danijar

Je ne suis pas sûr que tu veuilles faire ça. S'il n'y a pas de vhost par défaut dans une configuration Apache, le premier vhost défini devient par défaut .

Tout ce que vous devez vraiment faire, c'est que la valeur par défaut serve une page vierge.

6
user9517

Oui et non.

Vous pouvez commenter ou supprimer la directive DocumentRoot , pas de problème. Mais cela n'obtient pas grand-chose, car il reviendra par défaut au répertoire par défaut PREFIX/htdocs/ où PREFIX est défini lors de la génération d'Apache.

Lorsque VirtualHosts a configuré toutes les demandes qui ne sont pas gérées par un hôte virtuel explicitement configuré, elles sont gérées par le virtualhost par défaut (qui est généralement le premier, mais httpd -S vous le dira).

6
HBruijn

Tout fichier de configuration Apache avec l'extension .conf située à l'intérieur /etc/httpd/conf.d/ sera inclus dans la configuration d'Apache. Ainsi, pour désactiver la configuration par défaut de la page "Bienvenue", nous devons renommer sa configuration /etc/httpd/conf.d/welcome.conf:

Étape 1 Déplacer le fichier de bienvenue par défaut:

Sudo mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.backup 

Étape 2: redémarrer le service Appache2

Sudo systemctl restart httpd
1
Usman Ali Maan

Changez simplement le port par défaut en:

Listen 80
Listen 8080 # any fake port

et laissez * .80 dans VirtualHost

Fonctionne pour moi avec Apache2 et Centos 7

Plus d'exemples que vous pouvez trouver dans documentation . Jetez un œil à la variable _default_.

0
Vasin Yuriy

Pour désactiver cette page, nous devons renommer le fichier /etc/httpd/conf.d/welcome.conf en quelque chose d'autre ou vous pouvez simplement le supprimer si vous n'en avez pas besoin.

mv /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.d/welcome.conf_backup

Assurez-vous qu'Apache est redémarré (en tant que root) avec la commande:

systemctl restart httpd

0
Sukhjinder Singh

Dans votre /etc/httpd/conf/httpd.conf, si votre directive Listen est

Listen 80

C'est méchant

*:80

Vous avez défini un couple <listener> + <servename> dans votre /etc/httpd/conf/httpd.conf et /etc/httpd/conf.d/default.conf qui sont les mêmes: *:80 + <server-ip>. Donc, Apache n'en prend qu'un en compte.

Donc, votre configuration vhost est inutile.

Votre /etc/httpd/conf/httpd.conf est suffisant pour bloquer l'accès à votre répertoire/var/www/html.

Ajoutez simplement:

<Directory /var/www/html>
    Order Deny,Allow
    Deny from all
    Options None
    AllowOverride None
</Directory>

Veuillez lire https://httpd.Apache.org/docs/2.4/en/vhosts/name-based.html#alg :

Comment le serveur sélectionne l'hôte virtuel approprié basé sur le nom

Il est important de reconnaître que la première étape de la résolution d'hôte virtuel basée sur le nom est la résolution basée sur IP. La résolution d'hôte virtuel basé sur le nom choisit uniquement l'hôte virtuel basé sur le nom le plus approprié après avoir restreint les candidats à la meilleure correspondance basée sur IP. L'utilisation d'un caractère générique (*) pour l'adresse IP dans toutes les directives VirtualHost rend ce mappage basé sur IP non pertinent.

Lorsqu'une demande arrive, le serveur trouvera le meilleur argument de correspondance (le plus spécifique) en fonction de l'adresse IP et du port utilisés par la demande. S'il existe plusieurs hôtes virtuels contenant cette combinaison d'adresse et de port la mieux adaptée, Apache comparera davantage les directives ServerName et ServerAlias ​​au nom de serveur présent dans la demande.

Si vous omettez la directive ServerName de tout hôte virtuel basé sur le nom, le serveur utilise par défaut un nom de domaine complet (FQDN) dérivé du nom d'hôte du système. Ce nom de serveur défini implicitement peut conduire à une correspondance d'hôte virtuel contre-intuitive et est déconseillé.

L'hôte virtuel basé sur le nom par défaut pour une combinaison IP et port Si aucun ServerName ou ServerAlias ​​correspondant n'est trouvé dans l'ensemble d'hôtes virtuels contenant l'adresse IP et la combinaison de ports correspondants les plus spécifiques, alors le premier hôte virtuel répertorié qui correspond à celui qui sera utilisé.

0
Jordan LE NUFF