¡Esta es una revisión vieja del documento!
# Configurar proxy inverso en Oracle Cloud (Apache)
## Crear proxy
* Crear servidor proxy inverso (lo llamaremos `PROXY`). * En la misma VCN crear servidor Web (lo llamaremos `WEB`). * En `PROXY` autorizar mediante iptables la entrada de tráfico http y https
de sde internet. Guardar configuración y copiar. Ejecutar como root.
```bash iptables -I INPUT -m state –state NEW -p tcp –dport 80 -j ACCEPT iptables -I INPUT -m state –state NEW -p tcp –dport 443 -j ACCEPT iptables-save >/etc/iptables/rules.v4 cp /etc/iptables/rules.v4 /home/ubuntu/copias ```
* En `WEB` no es necesario hacer ningún cambio en `iptables` porque por defecto
están autorizadas las comunicaciones dentro de la misma VCN.
* Autorizar el tráfico http y https de entrada a la VCN. Modificando la lista de
seguridad por defecto.
* Instalar `apache2` en ambas máquinas.
```bash sudo apt-get install apache2 ```
* Cambiar el fichero `index.html` en ambos servidores y poner en cada uno de
ellos el nombre del servidor. De esta manera nos servirá para las pruebas.
* En el DNS crear el nombre de dominio apuntando a la IP pública del servidor
`PROXY`.
* Al navegar a ese nombre de dominio nos debe dar la página web con el nombre
del servidor `PROXY`. Lo que pretendemos conseguir es que nos dé la página web del servidor `WEB`, con el nombre correspondiente.
* En el servidor `PROXY` ejecutar:
```bash sudo a2enmod proxy proxy_http proxy_balancer lbmethod_byrequests sudo systemctl restart apache2 ```
* en el fichero `/etc/hosts` se añade la IP local del servidor `WEB`, con los
dos nombres de dominio.
``` n.n.n.n trainer1.my.to n.n.n.n demotrainer.my.to ```
* En el servidor `PROXY` cambiar la configuración del `apache2`. Se añaden dos
ficheros con los nuevos host virtuales.
`demotrainer.conf`
<VirtualHost *:80>
ServerAdmin ubuntu@localhost
ServerName demotrainer.my.to
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined
ProxyPass / http://demotrainer.my.to/
ProxyPassReverse / http://demotrainer.my.to/
ProxyRequests On
ProxyPreserveHost On
</VirtualHost>
`trainer1.conf`
<VirtualHost *:80>
ServerAdmin ubuntu@localhost
ServerName trainer.my.to
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined
ProxyPass / http://trainer1.my.to/
ProxyPassReverse / http://trainer1.my.to/
ProxyRequests On
ProxyPreserveHost On
</VirtualHost>
Con esto habremos redirigido todo el tráfico http al servidor `WEB`.
* En el servidor `WEB` se hace lo mismo. Se añaden dos
ficheros con los nuevos host virtuales.
`demotrainer.conf`
<VirtualHost *:80>
ServerAdmin ubuntu@localhost
ServerName demotrainer.my.to
DocumentRoot /var/www/demotrainer
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined
</VirtualHost>
`trainer1.conf`
<VirtualHost *:80>
ServerAdmin ubuntu@localhost
ServerName trainer1.my.to
DocumentRoot /var/www/trainer1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log vhost_combined
</VirtualHost>
## Configurar SSL
Los certificados se instalan en el proxy.
* Instalar paquetes
```bash sudo apt install certbot sudo apt install python3-certbot-apache ```
* Crear certificados
```bash sudo certbot -d trainer1.my.to -d demotrainer.my.to ```
Con esto se habrán creado dos servidores virtuales nuevos para https, apuntando a los nuevos certificados. Los servidores virtuales viejos se habrán modificado para redirigir las peticiones http a https.