Redirigere le richieste su un server pubblico usando APACHE

Oggi mi servirà rendere pubblico un server web interno, nel quale ho installato delle applicazioni particolari ed instabili che non voglio installare nel server web pubblico.
Di conseguenza ecco come modificare Apache per redirigere le richieste dal server pubblico al server privato.

ProxyPass e ProxyPassReverse saranno vostri amici.

Ecco come usarli

ProxyPass /pagina http://192.168.2.8/wiki
ProxyPassReverse  /pagina http://192.168.2.8/wiki

La pagina sarebbe la pagina pubblica
ed il resto dove volete farlo andare

Ma ora ho un nuovo problema. Così facendo le richieste al server interno arriveranno dall’IP del server pubblico ma, naturalmente, non voglio questo e avrei bisogno anche dell’ IP del client per usarlo in PHP.

Ma anche per questo c’é una soluzione. Visto che apache ci invia il dato nel header della richiesta basterà leggerlo ed ecco come:
– per i log personalizziamo in log inserendo la variabile del header
creiamo un LogFormat specifico, utilizando la variabile X-Forwarded-For

LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" nuovo

ed usiamolo in CustomLog

CustomLog logs/access_log nuovo

– per lo script php si procede allo stesso modo.

// leggiamo, gli header di apache
$headers = apache_request_headers();
// estrapoliamo ip
$ip_vero = $headers["X-Forwarded-For"];

Leave a Reply

Your email address will not be published. Required fields are marked *