Apache HTTP Server - Dos o més Servidors darrere de la mateixa IP pública

server proxyDepenent de la topologia de xarxa necessària en cada situació, és possible necessitar un proxy o balancejador de peticions HTTP, no és necessari que es tinguen milions de peticions per a tal necessitat, simplement pot ser que disposem de diversos servidors (IIS, HTTP, E-mail, ...), i es pretén ocultar aquesta topològica al client llançant tot pel mateix port (seguretat per foscor).

En el context de les xarxes informàtiques, el terme proxy, fa referència a un programa o dispositiu que realitza una acció en representació d'un altre. La seua finalitat més habitual és la de servidor proxy, que serveix per a permetre l'accés a Internet a tots els equips d'una organització quan només es pot disposar d'un únic equip connectat, o només disposem d'una adreça IP pública.

Es pot donar el cas que tinguem dos servidors web amb la mateixa IP publica. Apatxe té una funció que satisfà aquesta necessitat. El mòdul es diu "proxi_http". El cas que els plantege és el següent escenari.

Tenim ja un servidor web a la nostra xarxa sota Ubuntu Server 18.04 LTS (Bionic Beaver), però volem que un altre ordinador de la nostra xarxa siga també un servidor, aquest sot a Debian 9 (Stretch). Tots dos fan ús del Servidor HTTP d'Apatche. Al primer s'accedeix a través de http://roig.sytes.net/ i al segon volia que s'accedís a través de http://servidorsroig.sytes.net/, sense tindre la necessitat d'afegir en cap d'ells el port d'escolta del servidor Apache.

Per fe-ho configurarem un dels servidors (en aquest exemple Ubuntu Server) rebrà les peticions del servidor Debian, i les redirigirà a l'equip pertinent (seguint l'exemple el Servidor sot a Debian). Tant se val els sistemes dels servidors, però si haurem de tindre tots dos, servint les webs, sot als Virtual Hosts del servidor Apache.

Al Servidor (Ubuntu Server) que rebrà les peticions per redirigir-les a l'equip pertinent

Primer per part del servidor Apache haurem de tindre habilitat, el mòdul proxi_http, per fer-ho tant en Ubuntu com en Debian cal escriure al terminal:

# a2enmod  proxy proxy_http

Per activar la nova configuració, hem d'executar:

# systemctl restart apache2

  Després hem de configurar el Servidor perquè quan es facen peticions per a l'altre servidor (en aquest cas Servidor Debian), és les, reenvie. Per això utilitzarem els Virtual Hosts que són a /etc/apache2/sites-available, podem donar-li un nom que ens ajude tant com a identificar-lo com a sabre la seua funció:

# nano -w /etc/apache2/sites-available/proxi-servidorsroig.sytes.net.conf

On tan sols afegirem les següents directives:

<VirtualHost *:80>
    ServerAdmin admin@servidorsroig.sytes.net
    ServerName servidorsroig.sytes.net
    ServerAlias www.servidorsroig.sytes.net

# IP fixa del servidor destí o Adreça web.
    ProxyPass / http://192.168.1.6
    ProxyPassReverse / http://192.168.1.6
</VirtualHost>

Deseu i tanqueu el fitxer quan hàgeu acabat. No oblideu canviar l'anteriorment ressaltat per la seua pròpia configuració, podem utilitzar tant la IP fixa del servidor, com en aquest cas, com l'adreça web que alen aquest cas seria: http:servidorsroig.sytes.net.

Tingueu en compte que al meu cas el domini i la IP interna del servidor on es deuen enviar les peticions és servidorsroig.sytes.net i http://192.168.1.6/ (Servidor Debian) i estem creant el redreçament en (Ubuntu Server).

Habilita l'arxiu amb l'eina a2ensite. Amb privilegis de superusuari, fent ús de sudo o com usuari root tecleja:

a2ensite proxi-servidorsroig.sytes.net.conf

A continuació, provem els errors de configuració. Amb privilegis de superusuari, fent ús de sudo o com usuari root tecleja:

apache2ctl configtest

Heu de veure la sortida següent:

Syntax OK

Reinicia Apache per implementar els canvis. Amb privilegis de superusuari, fent ús de sudo o com usuari root tecleja:

systemctl restart apache2

Al Servidor (Debian 9) que és al darrere del Proxi

Ara al servidor que és al darrere d'aquest Proxi Servidor Debian, hem d'afegir el lloc que servira les peticions demanades cap a l'exterior. aquest lloc el creem editant l'arxiu default o creant un de nou. És necessari crear un fitxer host virtual (Virtual Hosts), amb les directives correctes i ordinàries si no sabeu com fer-ho podeu consultar la guia Virtual Hosts del servidor Apache. Seguint els exemples de aquesta mateixa guia:

<VirtualHost *:80>
    ServerAdmin admin@servidorsroig.sytes.net
    ServerName servidorsroig.sytes.net
    ServerAlias www.servidorsroig.sytes.net
    DocumentRoot /var/www/servidorsroig.sytes.net/html
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

 És possible que tingueu un fireway activat, en aquest cas li donarem permis al port d'escolta del servidor Apache, segons aquesta guia el port 80 i firewall UFW, podeu fer-ho escrivint:

ufw allow 80/tcp

Ja podem accedir als dos servidors web amb la mateixa IP externa i el mateix port d'escolta del servidor Apache.

apache http