Vamos começar instalando o apache2 e algumas libs:
sudo apt-get install apache2 php7.2 libapache2-mod-php7.2
$ sudo apt-get install libapache2-mod-auth-mysql php7.2-mysql
$ sudo apt-get install apache2-prefork-dev
Habilitando os módulos do apache para o redirecionamento e para o proxy pass:
sudo a2enmod env proxy_ajp proxy_balancer proxy proxy_connect proxy_http rewrite ssl headers
Para desabilitar os mods basta usar:
sudo a2dismod [nome-dos-módulos]
Agora iremos criar o arquivo na pasta do apache2:
sudo nano /etc/apache2/sites-available/meuSite
NOTA: no caso se for o Ubuntu 16.04 ou 18.04 precisa colocar o ".conf" no final, ex.: meuSite.conf.
Para habilitar um site utilize o comando:
sudo a2ensite meuSite
e para desabilitar:
sudo a2dissite meuSite
e para reiniciar o apache:
sudo service apache2 reload
e em caso de travamento ou para reiniciá-lo utilizar:
sudo service apache2 restart
Dentro do arquivo meuSite vamos colocar os seguintes itens:
<VirtualHost *:80>
ServerName www.meuDominio.com
RewriteEngine On
RedirectMatch .* https://meuDominio.com/$1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
<VirtualHost *:80>
ServerName meuDominio.com
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]
</VirtualHost>
São duas formas diferentes de redirecionamento, e cada uma das duas está redirecionando do http para o https.
Agora vamos fazer o proxy pass, essas linhas farão parte do mesmo arquivo, indo abaixo do </VirtualHost> do segundo redirecionamento:
<VirtualHost *:443>
ServerName meuDominio.com
ServerAlias meuDominio.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLEngine On
SSLProxyEngine On
SSLProxyVerify none
SSLProxyCheckPeerCN off
SSLProxyCheckPeerExpire off
#SSLProxyCheckPeerName off
ProxyPreserveHost On
ProxyPass / http://192.168.2.15:8000/
ProxyPassReverse / http://192.168.2.15:8000/
ProxyVia On
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto 'https' env=HTTPS
SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
</VirtualHost>
O ip do ProxyPass é o ip do segundo servidor.
Essas duas linhas de SSLCertificate estão aí porque fiz um certificado com o openssl e então deixei elas aí pois o cert-bot irá sobrescrevê-las depois.
Nesse caso estamos utilizando a porta 8000 interna para mandar para o segundo servidor.
Se houver uma mensagem como:
apache2: Could not determine the server's fully qualified domain name, using 127.0.0.1 for ServerName.
É só colocar ServerName localhost no final do apache2.conf:
sudo nano /etc/apache2/apache2.conf
Apertar pagedown até a última linha e adicionar:
ServerName localhost
E reiniciar o Apache:
sudo service apache2 restart