Esempio di NGINX
NGINX offre funzionalità proxy e opzioni del server Web. Nell'esempio riportato di seguito viene impostato solo il bilanciamento del carico. Alcune funzionalità, come le "sticky session", non sono disponibili nella versione gratuita e richiedono un aggiornamento a NGINX Plus.
Impostazioni front-end
Per le impostazioni front-end di NGINX, vengono configurati dei server che contengono le regole per porte e instradamento.
• listen
Equivale a HAProxy bind e indica la porta esterna con la quale l'applicazione comunica.
• location
Regole di instradamento basate su path come in HAProxy.
◦ Per default, tutto il traffico viene indirizzato a / location e passa al gruppo thingworx a monte.
◦ La voce corrispondente alla posizione per il server connessioni utilizza un'espressione regex anziché elencare ogni percorso. Questi passeranno al gruppo cxserver a monte.
Ad esempio:
server {
listen 80;
# connection server paths
location ~ ^/Thingworx/(WS|WSTunnelClient|WSTunnelServer|TWS)\.* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://cxserver;
}
# everything else to thingworx
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://thingworx;
}
}
Impostazioni back-end della piattaforma
Questa sezione contiene l'elenco dei server che possono gestire le richieste e l'algoritmo di bilanciamento del carico.
• ip_hash
Associa la richiesta a un server in modo permanente in base all'indirizzo IP. Le sticky session sono una funzionalità di NGINX Plus.
• server
Esistono voci per ogni server nell'elenco.
• Non vengono configurati controlli dello stato ma, in caso di errore di un server, il traffico viene reinstradato. I controlli dello stato sono una funzionalità di NGINX Plus.
Ad esempio:
upstream thingworx {
ip_hash;
server platform1:80;
server platform2:80;
}
Impostazioni back-end del server connessioni
• ip_hash
Associa la richiesta a un server in modo permanente in base all'indirizzo IP. Equivale a source in HAProxy.
• server
Esistono voci per ogni server nell'elenco.
• Non vengono configurati controlli dello stato ma, in caso di errore di un server, il traffico viene reinstradato. I controlli dello stato sono una funzionalità di NGINX Plus.
Ad esempio:
upstream cxserver {
ip_hash;
server cxserver1:80;
server cxserver2:80;
}
Esempio completo
worker_processes 5; ## Default: 1
events {
}
http {
resolver 127.0.0.11:53 valid=30s;
upstream thingworx {
ip_hash;
server platform1:80;
server platform2:80;
}
upstream cxserver {
ip_hash;
server cxserver1:80;
server cxserver2:80;
}
server {
listen 80;
# connection server paths
location ~ ^/Thingworx/(WS|WSTunnelClient|WSTunnelServer|TWS)\.* {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_pass http://cxserver;
}
# everything else to thingworx
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_pass http://thingworx;
}
}
}