Apache + Node.js + mod_proxy. How to route one domain to :3000 and another to :80 Apache + Node.js + mod_proxy. How to route one domain to :3000 and another to :80 apache apache

Apache + Node.js + mod_proxy. How to route one domain to :3000 and another to :80


Just make two <VirtualHost *:80> tags

<VirtualHost *:80>    ServerAdmin info@node-example.com    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 info@node-example.com    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>

It should work that way ;)

Or if your localhost:80 app isn't node you can remove <Proxy *> & <Location /> tags for that target and replace it with DocumentRoot /var/www/node-example.com - your static path to index.html


I suggest you create two different virtual host conf files for two domains. This will enable you to configure them independently besides moving them to different servers when the scaling is different.

For apache2 with default installation location,

create a file in /etc/apache2/sites-available/www.example1.com.conf

<VirtualHost *:80>        ServerName  www.example1.com        ServerAdmin webmaster@example1.com        <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>

Create another file www.example2.com.conf in sites-available and copy the above configuration replacing example1 with example2.

For subdomains, replace www in filename and inside configuration with your subdomain, eg: api.

Once you have the conf files created, you have to enable them with command

a2ensite www.example1.com.conf

and then reload apache2 with command

sudo systemctl reload apache2

Make sure you have the directories example1 and example2 created in APACHE_LOG_DIR created before you reload the apache.

Thats it. configure your domain's A record with server IP address in your domain registrar or CDN, whatever you are using and you should be good to go.