venerdì , Marzo 29 2024
Ultime Notizie
Home / Vari / Web Server & Load Balancer

Web Server & Load Balancer

Ciao Ragazzi,

ritorno parlando Web Server e Load Balancer.

Per chi è pratico può già saltare questa parte, ma per chi non lo è, vi spiego come funziona il load balancer:

La tecnica di load balancing permette di dividere il carico di lavoro di un servizio (ad esempio un sito web) tra più server sincronizzati tra loro.

In questo caso, a seconda di come viene configurato il load balancer, le richieste vengono suddivise tra 3 Web Servers: in questo modo se uno dei tre nodi dovesse andare offline per qualche motivo, gli altri due permettono di continuare la fornitura del servizio.

Esistono diversi sistemi che permettono di fare load balancing, partendo da soluzioni open (Pen, Zevenet etc.) a soluzioni molto costose (Big-IP), ma oggi ci occupiamo di come trattare i dati che ci restituisce il Load Balancer.

In particolare, vederemo come ottenere il Real IP ovvero l’indirizzo IP del client che effettua la richiesta per poterlo loggare.

Se non curiamo questo aspetto, ci accorgiamo, analizzando i log del web server, che le richieste provengono sempre e solo da un indirizzo ip ossia quello del Load Balancer.

Se invece facciamo qualche modifica al file di log del nostro web server possiamo mostrare quello che è l’indirizzo ip del client che effettua la richiesta (utile in caso di troubleshooting per prevenzione DoS, marketing, geo-ip etc.)

Andiamo a mettere mano ai file di config.

Apache

Su Apache la procedura è molto semplice e basta modificare un file di configurazione (httpd.conf in alcune versioni, apache.conf in altre) che generalmente risiede nella cartella /etc/apache2/

La modifica:

LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_proxy

 

Eccovi un esempio:

46.xxx.xxx.xxx (185.xxx.xxx.xxx) – – [30/Nov/2017:18:03:02 +0100] “GET myPage.html HTTP/1.1” 200 422 “http://my_balanced_website/” “Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:57.0) Gecko/20100101 Firefox/57.0”

Nell’esempio pratico:

46.xxx.xxx.xxx -> IP Load Balancer

185.xxx.xxx.xxx -> IP Client

Nginx

Su nginx è ancora più facile.

Modifichiamo il file /etc/nginx/conf.d/default.conf aggiungendo queste due righe:

set_real_ip_from  46.xxx.xxx.xxx;
real_ip_header    X-Forwarded-For;

 

In questo caso stiamo dicendo al web server 2 cose:

– L’IP che può abilitare la sovrascrittura dell’indirizzo IP (per motivi di sicurezza lo permettiamo solo al nostro Load Balancer)

– In quale campo (X-Forwarded-For) trovare il vero indirizzo IP

Nell’esempio pratico il log passa da:

46.xxx.xxx.xxx – – [30/Nov/2017:18:34:02 +0000] “GET / HTTP/1.0” 200 700 “http://my_balanced_website/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36”

A:

185.xxx.xxx.xxx – – [30/Nov/2017:18:36:22 +0000] “GET / HTTP/1.0” 200 700 “http://my_balanced_website/” “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36”

IIS

Anche su IIS è possibile effettuare questa operazione, vediamo come:

Nei prossimi articoli magari mi addentro un po’ di più sulla configurazione del Load Balancer.

Enjoy!

 

 

Info Paolo Daniele

Ingegnere delle Telecomunicazioni, appassionato di informatica fin da piccolo ho trasformato la passione in lavoro. Con il PHP faccio tutto (o quasi...) ma non disprezzo altri linguaggi all'occorrenza. Se vi piace il mio sito, o vi è utile, o vi sto simpatico, offritemi una birra!

Ti potrebbe interessare

Windows Server: Richiedere un certificato SSL con SAN per IIS

Ciao Ragazzi, ogni tanto mi capita di dover generare certificati SSL per clienti che hanno …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *