2 votes

Apache2 : Limitez l'hôte virtuel à un seul nom de domaine

Je veux faire quelque chose mais je ne trouve pas de réponse (peut-être j'ai mal cherché). Je ne sais pas si c'est possible donc dites-moi si ce n'est pas le cas.

J'aimerais limiter un hôte virtuel Apache à un seul nom de domaine : bde.yggdrasil.cafe. Ainsi, si l'utilisateur essaie d'accéder à ce site en utilisant 90.90.3.57 ou un autre nom de domaine, il sera considéré comme un site inexistant. Voici mon extra/bde.conf qui est inclus dans httpd.conf, vous comprendrez le problème :

    ServerName      bde.yggdrasil.cafe
    ServerAdmin     my@email.fr
    DocumentRoot    /srv/http/bdeweb

    #Some django config
    #[...]

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =bde.yggdrasil.cafe
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Listen 443

    ServerName      bde.yggdrasil.cafe
    ServerAdmin     my@email.fr
    DocumentRoot    /srv/http/bdeweb

    #Some django config
    #[...]

    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/bde.yggdrasil.cafe/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/bde.yggdrasil.cafe/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

Si j'utilise ce code et que j'essaie de me connecter à 90.90.3.57 ou yggdrasil.cafe en utilisant le protocole http, ma requête est interceptée par django qui renvoie une erreur 400 (C'est bien mais ce n'est pas ce que je veux obtenir). Si je me connecte à bde.yggdrasil.cafe en utilisant http, il me redirige correctement vers https.

Redirection DNS

Je pense que cela peut être utile donc je vous donne mes Redirections DNS :

yggdrasil.cafe      --> 90.90.3.57
bde.yggdrasil.cafe  --> yggdrasil.cafe

Suppression de la configuration Django

Si je supprime la configuration django dans mon hôte virtuel HTTP et j'utilise le fichier suivant :

    ServerName      bde.yggdrasil.cafe

    RewriteEngine on
    RewriteCond %{SERVER_NAME} =bde.yggdrasil.cafe
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

Listen 443

    ServerName      bde.yggdrasil.cafe
    ServerAdmin     my@email.fr
    DocumentRoot    /srv/http/bdeweb

    #Some django config
    #[...]

    SSLEngine on
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/bde.yggdrasil.cafe/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/bde.yggdrasil.cafe/privkey.pem
    Include /etc/letsencrypt/options-ssl-apache.conf

Si j'essaie de me connecter à mon serveur en utilisant 90.90.3.57 ou yggdrasil.cafe, je tombe sur "Indexes of /" (ce qui est mauvais, vraiment mauvais).

Je voudrais que Apache ignore la connexion si l'utilisateur n'utilise pas le sous-domaine "bde.yggdrasil.cafe".

Pourquoi je veux faire ça ?

Ce domaine est pour toutes mes affaires, y compris un futur site vitrine personnel que je voudrais héberger sur le nom de domaine "yggdrasil.cafe" (sans sous-domaine). Donc l'important n'est pas le résultat mais je voudrais savoir s'il est possible d'ajouter un autre VirtualHost sur le nom de domaine "yggdrasil.cafe" par la suite sans que django l'intercepte.

Merci pour votre temps :)

0voto

Biboozz Points 501

Solution

Comme dit par Dusan Basic

Bien sûr, il suffit d'ajouter un autre VirtualHost avec ServerName yggdrasil.cafe; pour commencer, vous pouvez avoir simplement RewriteRule ^ - [F]

Ça a résolu le problème :)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X