Configuration Apache - sous domaines dynamiques et fixes / HTTPS
Bonjour,
J'ai actuellement quelques problèmes de configuration d'Apache sur un site Symfony. Ça fonctionnait en local, mais en prod, impossible de faire fonctionner comme je le souhaiterais. Je m'explique :
J'ai un site : monsite.com ainsi que sa démo, demo.monsite.com. Jusque là, tout fonctionnait, j'avais rajouté l'entrée demo.monsite.com dans mes DNS sur OVH.
Plus récemment, j'ai souhaité que chaque utilisateur ait son sous-domaine : user1.monsite.com, user2.monsite.com, ... j'ai réussi à configurer Apache, et ça fonctionne, ainsi que l'HTTPS.
MAIS (!), comme j'ai demo.monsite.com, je veux aussi pouvoir aller sur : user1.demo.monsite.com, user2.demo.monsite.com. Et là, impossible d'accéder à userX.demo.monsite.com : "Impossible de trouver l'adresse IP du serveur".
Sur la prod, ça me parait plus compliqué, j'ai l'HTTPS à gérer et ça rajoute de la complexité ! Déjà, je ne sais pas si il faut modifier le fichier "monsite-le-ssl.conf" ou "monsite.conf" (ou les deux !).
J'utilise Letsencrypt. J'ai créé un certificat "Wildcard" avec la commande suivante :
Code:
1 2
|
certbot certonly --manual --server https://acme-v02.api.letsencrypt.org/directory -d monsite.com -d *.monsite.com |
Ça a bien fonctionné, mais pas pour les sous domaines de demo.
Je ne sais plus où regarder, et un peu d'aide me ferait le plus grand plaisir :)
Voilà ma config de vhosts en local, elle fonctionne :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
<VirtualHost *:80>
ServerName localhost
DocumentRoot c:/wamp64/www
<Directory "c:/wamp64/www/">
Options +Indexes +Includes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName demo.monsite.local
ServerAlias *.demo.monsite.local
DocumentRoot c:/wamp64/www/monsite/web
DirectoryIndex app_demo.php
<Directory c:/wamp64/www/monsite/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app_demo.php [QSA,L]
</IfModule>
</Directory>
</VirtualHost>
<VirtualHost *:80>
ServerName monsite.local
ServerAlias *.monsite.local
DocumentRoot c:/wamp64/www/monsite/web
DirectoryIndex app_dev.php
<Directory c:/wamp64/www/monsite/web>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /app_dev.php [QSA,L]
</IfModule>
</Directory>
</VirtualHost> |
La config dans le fichier "monsite.conf" de apache :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
<VirtualHost *:80>
ServerName demo.monsite.com
ServerAlias *.demo.monsite.com
DocumentRoot /var/vhosts/monsite/current/web
DirectoryIndex app_demo.php
<Directory /var/vhosts/monsite/current/web>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app_demo.php [QSA,L]
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{SERVER_NAME} =demo.monsite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<VirtualHost *:80>
ServerName monsite.com
ServerAlias *.monsite.com
DocumentRoot /var/vhosts/monsite/current/web
DirectoryIndex app.php
<Directory /var/vhosts/monsite/current/web>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteCond %{SERVER_NAME} =monsite.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost> |
Et enfin, la config dans "monsite-le-ssl.conf"
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName demo.monsite.com
ServerAlias *.demo.monsite.com
DocumentRoot /var/vhosts/monsite/current/web
DirectoryIndex app_demo.php
<Directory /var/vhosts/monsite/current/web>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app_demo.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/project/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/monsite.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/monsite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/monsite.com/privkey.pem
</VirtualHost>
</IfModule>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName monsite.com
ServerAlias *.monsite.com
DocumentRoot /var/vhosts/monsite/current/web
DirectoryIndex app.php
<Directory /var/vhosts/monsite/current/web>
AllowOverride None
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory /var/www/project/web/bundles>
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLEngine on
SSLCertificateFile /etc/letsencrypt/live/monsite.com/cert.pem
SSLCertificateChainFile /etc/letsencrypt/live/monsite.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/monsite.com/privkey.pem
</VirtualHost>
</IfModule> |
Merci beaucoup (beaucoup beaucoup beaucoup !) :)
EDIT : en fait il fallait plutot se concentrer sur les DNS que sur la config serveur ... et rajouter *.demo.monsite.com dans les DNS