Configuración de un proxy inverso en Apache

Últimamente esas apareciendo numerosos servicios web que se ejecutan en puertos diferentes de los standar 80/443, grafana por el 3000, rpimonitor 8888, o el conocido del tomcat 8080.

Pues con esta entrada voy a explicar cómo hacer una redirección de puertos de una manera muy sencilla con el apache y los módulos proxy_module y proxy_http_module.

Editamos el fichero de configuración del apache y habilitamos los módulos, para sistemas centos / red-hat.

vi /etc/apache/conf/httpd.conf

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

Para sistemas debian / ubuntu habilitamos con los comandos.

a2enmod proxy
a2enmod proxy_http

Y a continuación editamos el fichero del apache donde tengamos los host y configuramos el proxy para que apunta al puerto donde publiquemos la web (ej, grafana).

vi /etc/apache/conf/httpd.conf (centos / red-hat)
vi /etc/apache2/sites-enabled/000-default.conf (debian / ubuntu)

    ProxyPass / http://127.0.0.1:3000/
    ProxyPassReverse / http://127.0.0.1:3000/

Reiniciamos el servidor apache y el grafana como en el ejemplo ya se publicara por el puerto 80.

Redirección de http a https en apache.

En los albores de internet, podríamos decir que todo era mas “seguro” y existían muchos menos ataques malintencionados que ahora, con lo que todas las webs funcionaban bajo el protocolo http.

Con el tiempo se detecto que ese protocolo era inseguro ya que el trafico viajaba sin cifrar, con lo que se creo el protocolo seguro “https”, con lo que si queremos que nuestra web funcione siempre en con el protocolos seguro debemos de redirigir todo el trafico http a https.

A continuación paso a explicar como hacerlo el servidor web apache.

Si lo hacemos en un entorno ubuntu/debian los pasos de instalación serian estos:

#Instalamos apache2 
apt-get install apache2

#Habilitamos el módulo SSL y  rewrite
a2enmod ssl
a2enmod rewrite 

Y en centos estos:

#Instalar apache2 
yum install http

# Instalamos el módulo SSL y openssl
yum install mod_ssl openssl

#Añadimos modulo en fichero configuracion
vi /etc/httpd/conf/httpd.conf
LoadModule rewrite_module modules/mod_rewrite.so

A continuación en el fichero de configuración de apache redirigimos el trafico.

#debian/ubuntu
/etc/apache2/sites-enabled/000-default.conf
#centos
vim /etc/httpd/conf.d/000-vhost.conf

<VirtualHost *:80>
        RewriteEngine on
        ReWriteCond %{SERVER_PORT} !^443$
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [NC,R,L]
</VirtualHost>

Con esta configuración forzaremos que todo trafico http vaya al puerto https.