Notas de Luis

Oracle Cloud - Proxy inverso 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.
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.
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:
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
sudo apt install certbot
sudo apt install python3-certbot-apache
  • Crear certificados
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.

computing/cloud/oci_reverse_proxy_apache.txt · Última modificación: por 127.0.0.1