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;
}