Di norma il TLS delle richieste HTTP viene terminato sul reverse proxy integrato, ma se dovete distribuire l’applicazione su più host potete modificare questo comportamento.
Per usare un proxy esterno e distribuire le richieste tra i nodi, eseguite i comandi seguenti.
Per il servizio Authentication Server (NtkAS):
$ ntk cfg setc nas.external_proxy on
$ ntk redis start
$ ntk cfg set :nas.redis_url redis://10.0.1.98:6379/cache
$ ntk as restart
Sostituite l’indirizzo IP 10.0.1.98 con quello del nodo che eseguirà l’acceleratore Redis. Per garantire l’alta disponibilità del servizio di accelerazione Redis vi consigliamo di usare il servizio VRRP. Consultate Configurare il servizio REDIS con VRRP.
Per il servizio SSO (NtkSSO):
$ ntk cfg setc sso.external_proxy on
$ ntk sso restart
Eseguite questi comandi su ogni nodo che farà parte del pool di backend del bilanciatore di carico esterno.
I servizi si aspettano di ricevere l’indirizzo IP reale del client
nell’intestazione HTTP X-Real-IP. Questo è importante se applicate politiche
di sicurezza diverse a seconda della posizione dell’utente nella rete.
Dopo la riconfigurazione, il servizio NtkAS sarà esposto sulla tcp/5000 del
nodo, mentre il servizio NtkSSO sulla tcp/7000. Aggiungete questi endpoint al
pool del bilanciatore di carico esterno. Usate ntk net eth0 address per
individuare l’indirizzo IP interno del nodo.
Se la porta di gestione non ha il valore predefinito e la modalità dual
instance è attiva (:nas.dual_instance_mode = on), anche l’interfaccia di
gestione sarà esposta sulla tcp/6000; proteggetela però con misure aggiuntive se
esponete pubblicamente l’interfaccia amministrativa. In caso contrario, potete
usare il servizio proxy integrato per accedere alla gestione direttamente
tramite l’indirizzo IP interno del nodo. Potete configurare il servizio VRRP in
modo che tutti i nodi usino un unico indirizzo IP interno. Per maggiori
dettagli consultate la
documentazione.
Di seguito trovate alcuni esempi di configurazione per le soluzioni di bilanciamento di carico più comuni.
Configurazione di HAProxy per un servizio NtkAS
backend notakey-backend
mode http
balance roundrobin
option forwardfor
option httpchk
http-request set-header X-Forwarded-Port %[dst_port]
http-request set-header X-Real-IP %[src_addr]
http-request add-header X-Forwarded-Proto https if { ssl_fc }
server node01 10.0.1.71:5000 check
server node02 10.0.1.72:5000 check
server node03 10.0.1.73:5000 check
Configurazione di Nginx per un servizio NtkAS
http {
include conf/mime.types;
index index.html index.htm index.php;
access_log logs/access.log main;
sendfile on;
tcp_nopush on;
server_names_hash_bucket_size 128; # this seems to be required for some vhosts
upstream ntkservers {
server 10.0.1.71:5000;
server 10.0.1.72:5000;
server 10.0.1.73:5000;
# Nginx open source monitors backends by analyzing requests
# If request times out, backend is marked as unavailable
# This may lead to unintended failures during appliance updates
}
; Nginx Plus config
match server_ok {
status 200;
}
server {
listen 443 ssl http2;
root /app/public;
ssl_certificate /etc/nginx/ssl/ntkchain.pem;
ssl_certificate_key /etc/nginx/ssl/ntk.key;
ssl_session_timeout 1d;
ssl_session_cache shared:MySSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Port $server_port;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 10;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffers 32 4k;
proxy_redirect off;
proxy_pass http://ntkservers;
# Nginx Plus config
health_check interval=10 uri=/api/health match=server_ok;
}
}
}