Problème: je dois héberger une application Node et une application php sur le même serveur, dans différents domaines.
example.com doit utiliser le port 80 normalement, mais node-example.com doit être routé vers le port 3000.
Le routage de tout le trafic du port 80 au port 3000 fonctionne bien avec mod_proxy, ainsi:
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName node-example.com
ServerAlias www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
Ceci fait cependant que example.com et node-example.com pointent vers localhost: 3000 et exécutent l'application Node.
Existe-t-il un moyen de laisser example.com pointer vers le port 80?
Par exemple, par exemple.com/old-admin, vous pouvez également pointer vers le port 80.
Il suffit de faire deux balises <VirtualHost *:80>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName www.node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerAdmin [email protected]
ServerName node-example.com
ProxyRequests off
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
<Location />
ProxyPass http://localhost:80/
ProxyPassReverse http://localhost:80/
</Location>
</VirtualHost>
Cela devrait fonctionner ainsi;)
Ou, si votre application localhost:80
n'est pas un noeud, vous pouvez supprimer les balises <Proxy *>
& <Location />
pour cette cible et la remplacer par DocumentRoot /var/www/node-example.com
- votre chemin statique vers index.html
Je vous suggère de créer deux fichiers de configuration d'hôte virtuels différents pour deux domaines. Cela vous permettra de les configurer indépendamment, en plus de les déplacer vers des serveurs différents lorsque la mise à l'échelle est différente.
Pour Apache2 avec l'emplacement d'installation par défaut,
créer un fichier dans /etc/Apache2/sites-available/www.example1.com.conf
<VirtualHost *:80>
ServerName www.example1.com
ServerAdmin [email protected]
<Directory /home/example1/api/admin/docs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html
</Directory>
<Directory /home/example1/api/mobile/docs>
Options -Indexes +FollowSymLinks
AllowOverride All
Require all granted
DirectoryIndex index.html
</Directory>
ProxyRequests Off
ProxyPreserveHost On
ProxyPass /api/ "http://localhost:30007/"
ProxyPassReverse / "http://localhost:30007/"
ErrorLog ${Apache_LOG_DIR}/example1/example1.log
CustomLog ${Apache_LOG_DIR}/example1/example1.log combined
</VirtualHost>
Créez un autre fichier www.example2.com.conf
dans sites-available
et copiez la configuration ci-dessus en remplaçant exemple1 par exemple2.
Pour les sous-domaines, remplacez www
dans le nom du fichier et dans la configuration par votre sous-domaine, par exemple: api
.
Une fois que vous avez créé les fichiers de configuration, vous devez les activer avec la commande
a2ensite www.example1.com.conf
puis rechargez Apache2 avec la commande
Sudo systemctl reload Apache2
Assurez-vous que les répertoires example1
et example2
ont été créés dans Apache_LOG_DIR avant de recharger Apache.
C'est tout. configurez l'enregistrement A de votre domaine avec l'adresse IP du serveur dans votre registraire de domaine ou votre CDN, peu importe ce que vous utilisez et vous devriez être prêt à partir.