NGINX v ASAB Maestro
Technologie NGINX poskytuje:
- Schopnosti aplikační brány
- Vyvažování zátěže
- Průzkumník služeb
- Autorizaci pro další služby v clusteru
Servery
ASAB Maestro organizuje konfiguraci NGINX do následující struktury:
- HTTP server:
http
, viz config - HTTPS server:
https
, viz config - Interní HTTP server na portu tcp/8890:
internal
, viz config - Upstreamy
Konfigurace NGINX v deskriptorech
Sekce nginx
deskriptoru poskytuje informace o tom, jak očekává příslušná služba, že bude NGINX nakonfigurován.
To znamená, že specifikuje pravidla proxy přeposílání, která zpřístupňují API mikroslužby.
Příklad deskriptoru /Site/.../Descriptors/foobar.yaml
:
define:
type: rc/descriptor
...
nginx:
api:
port: 5678
upstreams:
upstream-foobar-extra: 1234
https:
location = /_introspect:
- internal
- proxy_method POST
- proxy_pass http://{{UPSTREAM}}/introspect
- proxy_ignore_headers Cache-Control Expires Set-Cookie
location /subpath/api/foobar:
- rewrite ^/subpath/api/(.*) /$1 break
- proxy_pass http://upstream-foobar-extra
server:
- ssl_client_certificate shared/custom-certificate.pem
- ssl_verify_client optional
Konverze konfigurace NGINX do YAML
Konfigurace NGINX v ASAB Maestro je přeložena do YAML, aby mohla být zahrnuta v modelu nebo deskriptorech.
Následující úryvek konfigurace NGINX:
location /api/myapp {
rewrite ^/api/myapp/(.*) /myapp/$1 break;
proxy_pass http://my-server:8080;
}
se stane v souborech YAML ASAB Maestro:
location /api/myapp:
- rewrite ^/api/myapp/(.*) /myapp/$1 break
- proxy_pass http://my-server:8080
Podobně můžete přidat konfiguraci do bloku serveru:
server:
- ssl_client_certificate shared/lmio-receiver/client-ca-cert.pem
- ssl_verify_client optional
Sekce api
Sekce api
umožňuje rychlé specifikování "hlavního" API služby.
Klíč port
specifikuje TCP port, na kterém je API vystaveno službou.
Tato položka vygeneruje příslušné položky location
a upstream
.
Plná automatizace
Sekce api
může být snadno jedinou sekcí v části nginx
deskriptoru služby.
Sekce upstream
Specifický upstream služby. Každá instance služby bude přidána do záznamu upstreamů v konfiguraci NGINX.
upstream odkazuje na všechny dostupné instance služby.
nginx:
upstreams:
upstream-foobar-extra: 1234
Služba foobar
definuje další API "extra", které je dostupné na portu tcp/1234
.
Stane se dostupným jako upstream
s názvem upstream-foobar-extra
a může být použito jako http://upstream-foobar-extra
v příkazech proxy_pass
v lokacích.
Výsledná konfigurace upstream
, předpokládající tři instance služby foobar
nacházející se na třech uzlech clusteru:
upstream upstream-foobar-extra {
keepalive 32;
server server1:3081;
server server2:3081;
server server3:3081;
}
Konfigurace serveru
Další možnosti jsou implementovány pro každý server zvlášť (http
, https
, internal
).
Dodatečné lokace mohou být specifikovány pro server.
Sekce location
Typicky, proxy konfigurace konkrétní komponenty nebo lokace staticky obsluhovaného obsahu.
Každá další lokace je přidána do konfigurace nginx jednou za službu, pokud není parametr INSTANCE_ID použit v hlavičce lokace. Pak je lokace zavedena pro každou instanci.
Sekce server
Konfigurace bloku serveru.
Konfigurace NGINX na úrovni modelu
Na úrovni modelu můžete specifikovat vlastní konfiguraci NGINX následujícím způsobem:
define:
type: rc/model
...
nginx:
https:
location /my-special-location:
- gzip_static on
- alias /webroot/lmio-webui/dist
Tímto se přidá location
"/my-special-location" na https
server.
Distribuce webových aplikací
Technologie NGINX slouží pro webové aplikace.
sherpa
webapp-dist
stahuje a instaluje webové aplikace definované v modelu.
Webové aplikace budou nasazeny (pokud je to potřeba) pokaždé, když je model aplikován (tj. je vydán příkaz "up").
Příklad model.yaml
:
define:
type: rc/model
...
webapps:
/: Moje webová aplikace
/auth: SeaCat Auth WebUI
/influxdb: InfluxDB UI
...
Sekce webapps
v modelu předepisuje nasazení tří webových aplikací:
- "Moje webová aplikace" bude nasazena do umístění
/
na HTTPS serveru - "SeaCat Auth WebUI" bude nasazena do umístění
/auth
na HTTPS serveru - "InfluxDB UI" bude nasazena do umístění
/influxdb
na HTTPS serveru
Podporované typy webových aplikací: