Diferencia entre revisiones de «Módulo Proxy en Apache 2.4»

De MediaWiki
Ir a la navegación Ir a la búsqueda
 
(No se muestran 13 ediciones intermedias del mismo usuario)
Línea 1: Línea 1:
 +
= Introducción =
 +
Un servidor proxy é unha interfaz de comunicación nunha rede que recibe as peticións e transmíteas en calidade de representante a un equipo de destino. Este funconamento é comun en redes corporativas para que os dispositivos cliente teñan un acceso controlado a Internet. O servidor configurado como proxy  presentase neste caso como a única posibilidade de conexión coa rede pública no que se coñece coma un proxy de reenvío (''forward proxy'').
 +
 +
A diferencia do proxy de reenvío que protexe os dispositivos cliente nunha rede das influencias procedentes de Internet, un proxy inverso traballa de modo que as protexa en sentido oposto; un ou varios servidores web activan un servidor proxy de tales características como compoñente de seguridade adicional para que poida encargarse das solicitudes procedentes de Internet e transmitilas a un servidor backend en segundo plano.
 +
 +
Os proxy inversos adoitan estar instalados nunha rede privada ou nunha zona desmilitarizada (DMZ) e estar protexidos por un firewall; de este xeito o servidor proxy inverso do mesmo modo que o servidor forward ou de reenvío representa a única conexión entre Internet e a rede privada.
 +
 +
Posibles vantaxes do uso dun proxy inverso:
 +
* Anonimización
 +
* Protección e cifrado
 +
* Balanceo de carga
 +
* Caché
 +
* Compresión
 +
 +
= Instalación =
 +
Instalación:
 +
sudo apt-get install libapache2-mod-proxy-html
 +
 +
Habilitación:
 +
sudo a2enmod proxy proxy_http
 +
 +
Cómpre reiniciar o servizo tras o cambio:
 +
sudo apache2 reload
 +
 +
= Configuración =
 +
No ficheiro de configuración do virtual host cambiar seguindo o siguiente esquema:
 +
<pre>
 +
<VirtualHost *:80>
 +
ServerName exemplo.com
 +
ServerAlias www.exemplo.com
 +
ProxyRequests Off
 +
ProxyPass / http://123.45.67.89/
 +
ProxyPassReverse / http://123.45.67.89/
 +
</VirtualHost>
 +
</pre>
 +
 +
Explicación das directivas:
 +
* '''ProxyRequests''': a directiva ProxyRequests co argumento Off impide que se utilice o servidor Apache HTTP como proxy forward ou de reenvío para evitar posibles abusos.
 +
* '''ProxyPass''': a directiva ProxyPass define o enderezo de destino para os reenvíos. O servidor proxy inverso reenviará todas las peticiones dirixidas o enderezo depositdao baixo a etiqueta ServerName ó enderezo interno consignado no argumento da directiva ProxyPass. No exemplo trataríase  da IP 123.45.67.89.
 +
* '''ProxyPassReverse''': un proxy server non se ocupa so das peticións; tamen transmite os paquetes de respuesta do servidor backend ós clientes. Para impedir que ditas respuestas se entreguen con datos de encabezado que non sexan correctos (cos datos do servidor nun segundo plano), a directiva ProxyPassReverse transcribe o encabezamiento das respuestas do servidor de tal xeito que estas se adapten ó servidor proxy, garantindo que o servidor backend permanece anónimo.
 +
 +
A continuación habilitar o sitio:
 +
sudo a2ensite exemplo.conf
 +
 +
= Uso =
 +
No exemplo anterior o servidor Apache HTTP será capaz de recibir todas as peticións realizadas a exemplo.com ou www.exemplo.com e de dirixilas en forma de solicitudes proxy a un servidor backend co enderezo IP 123.45.67.89; ahora teríamos que ter un servidor backend responden nesa ip.
 +
 +
= Solucionando complicacións =
 +
Para evitar problemas coas rutas HTML e a compresión, deberíamos habilitar:
 +
a2enmod headers
 +
 +
E unha posible configuración sería:
 +
ProxyPass "/web/"  "http://interno.exemplo.org/"
 +
ProxyPassReverse "/web/"  "http://interno.exemplo.org/"
 +
'''ProxyHTMLURLMap http://interno.exemplo.org /web
 +
'''<Location /web/>
 +
    '''ProxyPassReverse /
 +
    '''ProxyHTMLEnable On
 +
    '''ProxyHTMLURLMap / /web/
 +
    '''RequestHeader unset Accept-Encoding
 +
'''</Location>
  
 
= Referencias =
 
= Referencias =
Línea 4: Línea 65:
 
* https://plataforma.josedomingo.org/pledin/cursos/apache24/curso/u32/
 
* https://plataforma.josedomingo.org/pledin/cursos/apache24/curso/u32/
 
* https://www.josedomingo.org/pledin/2018/02/configuracion-de-un-proxy-inverso-con-apache-2-4/
 
* https://www.josedomingo.org/pledin/2018/02/configuracion-de-un-proxy-inverso-con-apache-2-4/
 +
* https://www.ionos.es/digitalguide/servidores/know-how/que-es-un-servidor-proxy-inverso/
 +
* https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=19709

Revisión actual del 14:37 18 nov 2020

Introducción

Un servidor proxy é unha interfaz de comunicación nunha rede que recibe as peticións e transmíteas en calidade de representante a un equipo de destino. Este funconamento é comun en redes corporativas para que os dispositivos cliente teñan un acceso controlado a Internet. O servidor configurado como proxy presentase neste caso como a única posibilidade de conexión coa rede pública no que se coñece coma un proxy de reenvío (forward proxy).

A diferencia do proxy de reenvío que protexe os dispositivos cliente nunha rede das influencias procedentes de Internet, un proxy inverso traballa de modo que as protexa en sentido oposto; un ou varios servidores web activan un servidor proxy de tales características como compoñente de seguridade adicional para que poida encargarse das solicitudes procedentes de Internet e transmitilas a un servidor backend en segundo plano.

Os proxy inversos adoitan estar instalados nunha rede privada ou nunha zona desmilitarizada (DMZ) e estar protexidos por un firewall; de este xeito o servidor proxy inverso do mesmo modo que o servidor forward ou de reenvío representa a única conexión entre Internet e a rede privada.

Posibles vantaxes do uso dun proxy inverso:

  • Anonimización
  • Protección e cifrado
  • Balanceo de carga
  • Caché
  • Compresión

Instalación

Instalación:

sudo apt-get install libapache2-mod-proxy-html

Habilitación:

sudo a2enmod proxy proxy_http

Cómpre reiniciar o servizo tras o cambio:

sudo apache2 reload

Configuración

No ficheiro de configuración do virtual host cambiar seguindo o siguiente esquema:

<VirtualHost *:80>
 ServerName exemplo.com
 ServerAlias www.exemplo.com
 ProxyRequests Off
 ProxyPass / http://123.45.67.89/
 ProxyPassReverse / http://123.45.67.89/
</VirtualHost>

Explicación das directivas:

  • ProxyRequests: a directiva ProxyRequests co argumento Off impide que se utilice o servidor Apache HTTP como proxy forward ou de reenvío para evitar posibles abusos.
  • ProxyPass: a directiva ProxyPass define o enderezo de destino para os reenvíos. O servidor proxy inverso reenviará todas las peticiones dirixidas o enderezo depositdao baixo a etiqueta ServerName ó enderezo interno consignado no argumento da directiva ProxyPass. No exemplo trataríase da IP 123.45.67.89.
  • ProxyPassReverse: un proxy server non se ocupa so das peticións; tamen transmite os paquetes de respuesta do servidor backend ós clientes. Para impedir que ditas respuestas se entreguen con datos de encabezado que non sexan correctos (cos datos do servidor nun segundo plano), a directiva ProxyPassReverse transcribe o encabezamiento das respuestas do servidor de tal xeito que estas se adapten ó servidor proxy, garantindo que o servidor backend permanece anónimo.

A continuación habilitar o sitio:

sudo a2ensite exemplo.conf

Uso

No exemplo anterior o servidor Apache HTTP será capaz de recibir todas as peticións realizadas a exemplo.com ou www.exemplo.com e de dirixilas en forma de solicitudes proxy a un servidor backend co enderezo IP 123.45.67.89; ahora teríamos que ter un servidor backend responden nesa ip.

Solucionando complicacións

Para evitar problemas coas rutas HTML e a compresión, deberíamos habilitar:

a2enmod headers

E unha posible configuración sería:

ProxyPass "/web/"  "http://interno.exemplo.org/"
ProxyPassReverse "/web/"  "http://interno.exemplo.org/"
ProxyHTMLURLMap http://interno.exemplo.org /web
<Location /web/>
   ProxyPassReverse /
   ProxyHTMLEnable On
   ProxyHTMLURLMap / /web/
   RequestHeader unset Accept-Encoding
</Location>

Referencias