If you want to use apache to set a virtualhost and to use it as proxy, to pass one or more localhosts to internet, all you have to do is to follow few simple rules described below:
- create file /etc/apache2/sites-available/VIRTUALHOST_NAME.conf
- sudo a2ensite virtual_host_file_name
- to disable an existing conf file sudo a2dissite virtual_host_file_name
- move file in /etc/apache2/sites-enabled/VIRTUALHOST_NAME.conf
- install ssl module sudo a2enmod ssl
- sudo service apache2 reload
Other commands for apache:
- show all modules installed apache2ctl -M
- show logs sudo systemctl status apache2.service
References
- DESIRED_PORT: represent the port where your current local server is running (node/go/etc server)
- URL_ADDRESS: your DNS
<VirtualHost *:80>
#Redirect permanent / https://URL_ADDRESS
#or
ServerName URL_ADDRESS
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin EMAIL
ServerName URL_ADDRESS
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:DESIRED_PORT/
ProxyPassReverse / http://127.0.0.1:DESIRED_PORT/
SSLEngine on
SSLCertificateFile /home/ubuntu/certificates/certificate.crt
SSLCertificateKeyFile /home/ubuntu/certificates/certificate.key
SSLCertificateChainFile /home/ubuntu/certificates/certificate.ca.crt
</VirtualHost>
</IfModule>
This article can be found as well on Gist