4.6. Provoz pomocí reverzní proxy
Aplikace Elza je často provozována za reverzní proxy. Ta umožňuje její běh na zabezpečený běh na adrese archivu (například: https://elza.archiv-xy.cz, případně: https://www.archiv-xy.cz/elza). V rovině reverzní proxy lze využít Apache HTTPD nebo NGINX.
4.6.1. Provoz na jiném než kořenovém URL
Aplikaci je možné provozovat i na jiném než kořenovém URL, například: https://www.archiv-xy.cz/elza. V takovém případě je nutné pomocí reverzní proxy směrovat požadavky z webového serveru do aplikace Elza, více viz: Provoz pomocí reverzní proxy. Na straně Elza je nutné navíc povolit akceptaci hlaviček X-Forwarded-…. obsahujícími informace o původním URL. V yaml konfiguraci je nutné aktivovat volbu elza.security.acceptForwardedHeaders=true.
Příklad konfigurace:
elza:
  .......
  security:
    acceptForwardedHeaders:true
  .......
4.6.2. Apache HTTPD
Příklad konfigurace pro https://elza.archiv-xy.cz
<VirtualHost elza.archiv-xy.cz:443>
  ServerName elza.archiv-xy.cz
  ProxyPreserveHost On
  ProxyRequests Off
  ProxyTimeout 60
  ProxyPass "/stomp" "ws://vnitrni-server.archiv.cz:8080/stomp"
  ProxyPassReverse "/stomp" "wss://elza.archiv-xy.cz/stomp"
  ProxyPass "/" "http://vnitrni-server.archiv:8080/"
  ProxyPassReverse "/" "https://elza.archiv-xy.cz/"
</VirtualHost>
Příklad konfigurace pro https://www.archiv-xy.cz/elza s využitím rewrite filtru
a přesměrováním požadavku na vnitřní server 10.2.0.27:
<VirtualHost www.archiv-xy.cz:443>
  ServerName www.archiv-xy.cz
  <Location "/elza">
  RequestHeader set X-Forwarded-Prefix "/elza"
  RequestHeader set X-Forwarded-Host "www.archiv-xy.cz"
  RequestHeader set X-Forwarded-Proto "https"
  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} websocket               [NC]
  RewriteRule   "/elza/(.*)$"  "ws://10.2.0.27:8080/$1" [P]
  RewriteRule   "/elza/(.*)$"  "http://10.2.0.27:8080/$1" [P]
  </Location>
</VirtualHost>
Od verze Apache HTTP 2.4.61 je nutné navíc povolit rewrite pro parametry za otazníkem.
<VirtualHost www.archiv-xy.cz:443>
  ServerName www.archiv-xy.cz
  RewriteEngine On
  RewriteCond %{HTTP:Upgrade} websocket               [NC]
  RewriteRule   "/elza/(.*)$"  "ws://10.2.0.27:8080/$1" [P,UnsafeAllow3F]
  RewriteRule   "/elza/(.*)$"  "http://10.2.0.27:8080/$1" [P,UnsafeAllow3F]
</VirtualHost>
4.6.3. NGINX
Příklad konfigurace pro https://elza.archiv-xy.cz
server {
  listen 443 ssl;
  listen [::]:443 ssl;
  server_name elza.archiv-xy.cz;
  access_log /var/log/nginx/reverse-access.log;
  error_log /var/log/nginx/reverse-error.log;
  location / {
    # redirect all HTTP traffic to localhost:8080
    proxy_pass http://localhost:8080;
    # WebSocket support
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
  ssl_certificate /etc/cert/servercertwithchain.pem;
  ssl_certificate_key /etc/cert/serverkeydec.pem;
}