.. _Admin_InstallRevProxy:
======================================
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.
.. _Admin_InstallRevProxy_Sub:
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: :ref:`Admin_InstallRevProxy`. 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:
.. code-block:: yaml
elza:
.......
security:
acceptForwardedHeaders:true
.......
Apache HTTPD
================
Příklad konfigurace pro https://elza.archiv-xy.cz
.. code-block:: apache
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/"
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 :token:`10.2.0.27`:
.. code-block:: apache
ServerName www.archiv-xy.cz
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]
Od verze Apache HTTP 2.4.61 je nutné navíc povolit rewrite pro parametry za otazníkem.
.. code-block:: apache
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]
NGINX
==========
Příklad konfigurace pro https://elza.archiv-xy.cz
.. code-block:: nginx
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;
}