From 06a9da6ab68b0e4c4c2adf34178107b3cee1fd32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Sat, 11 Nov 2023 23:38:09 +0100 Subject: [PATCH] Added docs on how to configure the reverse proxy for a subfolder & Documented the usage of X-Forwared-Prefix --- deployment/proxies.rst | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/deployment/proxies.rst b/deployment/proxies.rst index 416039ee040..128c1c96422 100644 --- a/deployment/proxies.rst +++ b/deployment/proxies.rst @@ -159,6 +159,29 @@ enough, as it will only trust the node sitting directly above your application ranges of any additional proxy (e.g. `CloudFront IP ranges`_) to the array of trusted proxies. +Reverse proxy in a subpath / subfolder +-------------------------------------- + +If you a running a Symfony application behind a reverse proxy, where the application is served in a subpath / subfolder, +you might encounter the problem that Symfony generates incorrect URLs, which ignore the subpath / subfolder of the reverse proxy. +To fix this, you need to pass the subpath / subfolder route prefix of the reverse proxy to Symfony by +setting the ``X-Forwarded-Prefix`` header. This is required for Symfony to generate the correct URLs. The header can normally be configured +in your reverse proxy configuration. Configure ``X-Forwared-Prefix`` as trusted header to be able to use this feature. + +The ``X-Forwarded-Prefix`` is used by Symfony to prefix the base URL of request objects, which is +used to generate absolute paths and URLs in Symfony applications. Without the header, the base URL would be only determined +based on the configuration of the web server running Symfony, which leads to incorrect pathes/URLs, when the application +is served under a subpath by a reverse proxy. + +For example if your symfony application is directly served under an URL like ``https://symfony.tld/`` +and you would like to use a reverse proxy to serve the application under ``https://public.tld/app/``, you would need +to set the ``X-Forwarded-Prefix`` header to ``/app/`` in your reverse proxy configuration. +Without the header, Symfony would generate URLs based on its servers base URL (e.g. ``/my/route``) instead of the correct +``/app/my/route``, which is required to access the route via the reverse proxy. + +The header can be different for each reverse proxy, so that access via different reverse proxies served under different +subpaths can be handled correctly. + Custom Headers When Using a Reverse Proxy -----------------------------------------