4.6. Provoz za reverzní proxy
V produkčním provozu běží Elza za webovým serverem v roli reverzní proxy
(Apache HTTPD nebo NGINX). Webový server zajišťuje HTTPS a předává
požadavky na HTTP port aplikace Elza (ve výchozím nastavení 8080, viz
server.port v kapitole Konfigurace aplikace).
Proxy musí předávat i spojení WebSocket: klient přijímá oznámení přes
cestu /stomp. Bez toho se aplikace sice načte, ale uživatelé nevidí
změny provedené ostatními ani průběh úloh na pozadí.
4.6.2. Elza pod cestou
Elzu lze provozovat i pod cestou stávajícího webu, například
https://www.archiv.example/elza. Proxy pak předává původní host,
protokol a prefix cesty v hlavičkách X-Forwarded-* a Elza je musí mít
povoleno přijímat:
elza:
security:
acceptForwardedHeaders: true
Varování
acceptForwardedHeaders zapínejte, jen pokud je Elza dostupná
výhradně přes proxy. Jinak by klient mohl poslat podvržené hlavičky
X-Forwarded-* přímo.
Příklad pro Apache HTTPD s přesměrováním na vnitřní server
10.0.0.27:
<VirtualHost *:443>
ServerName www.archiv.example
<Location "/elza">
RequestHeader set X-Forwarded-Prefix "/elza"
RequestHeader set X-Forwarded-Host "www.archiv.example"
RequestHeader set X-Forwarded-Proto "https"
</Location>
RewriteEngine On
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule "^/elza/(.*)$" "ws://10.0.0.27:8080/$1" [P,UnsafeAllow3F]
RewriteRule "^/elza/(.*)$" "http://10.0.0.27:8080/$1" [P,UnsafeAllow3F]
</VirtualHost>
Příznak UnsafeAllow3F je od Apache HTTPD 2.4.61 nutný pro URL se
zakódovaným otazníkem; ve starších verzích jej vynechte.