.. Zdroj: elza/docs/admin-guide/source/06-reverse-proxy.rst, elza e87a93d6d1 .. _Admin_InstallRevProxy: ============================ 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 :doc:`04-konfigurace`). 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í. Elza na vlastním doménovém jménu ================================ Příklad pro ``https://elza.archiv.example``. Apache HTTPD ------------ Vyžaduje moduly ``mod_proxy``, ``mod_proxy_http`` a ``mod_proxy_wstunnel``. .. code-block:: apache ServerName elza.archiv.example # SSLEngine, certifikáty ... ProxyPreserveHost On ProxyRequests Off ProxyTimeout 60 ProxyPass "/stomp" "ws://aplikacni-server.interni:8080/stomp" ProxyPassReverse "/stomp" "ws://aplikacni-server.interni:8080/stomp" ProxyPass "/" "http://aplikacni-server.interni:8080/" ProxyPassReverse "/" "http://aplikacni-server.interni:8080/" NGINX ----- .. code-block:: nginx server { listen 443 ssl; listen [::]:443 ssl; server_name elza.archiv.example; ssl_certificate /etc/cert/server-chain.pem; ssl_certificate_key /etc/cert/server-key.pem; client_max_body_size 100m; location / { proxy_pass http://localhost:8080; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebSocket proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } } ``client_max_body_size`` musí povolit největší nahrávání povolené Elzou (``elza.upload.max_request_size``, ve výchozím nastavení 100 MB). .. _Admin_InstallRevProxy_Sub: 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: .. code-block:: yaml elza: security: acceptForwardedHeaders: true .. warning:: ``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``: .. code-block:: apache ServerName www.archiv.example RequestHeader set X-Forwarded-Prefix "/elza" RequestHeader set X-Forwarded-Host "www.archiv.example" RequestHeader set X-Forwarded-Proto "https" 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] 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.