diff --git a/apache/proxy-to-virtual-path.conf b/apache/proxy-to-virtual-path.conf index 3da92e5..790834a 100644 --- a/apache/proxy-to-virtual-path.conf +++ b/apache/proxy-to-virtual-path.conf @@ -1,4 +1,5 @@ Listen 80 +LoadModule mpm_event_module modules/mod_mpm_event.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule unixd_module modules/mod_unixd.so @@ -22,7 +23,7 @@ Define DS_ADDRESS backendserver-address SetEnvIf Host "^(.*)$" THE_HOST=$1 RequestHeader setifempty X-Forwarded-Proto http RequestHeader setifempty X-Forwarded-Host %{THE_HOST}e - RequestHeader edit X-Forwarded-Host (.*) $1${VPATH} + RequestHeader setifempty X-Forwarded-Prefix ${VPATH} ProxyAddHeaders Off diff --git a/haproxy/proxy-to-virtual-path.cfg b/haproxy/proxy-to-virtual-path.cfg index 4156b44..15603c9 100644 --- a/haproxy/proxy-to-virtual-path.cfg +++ b/haproxy/proxy-to-virtual-path.cfg @@ -12,6 +12,6 @@ frontend default_port_80 default_backend default_service backend default_service acl existing-x-forwarded-host req.hdr(X-Forwarded-Host) -m found - http-request add-header X-Forwarded-Host %[req.hdr(Host)]/documentserver-virtual-path unless existing-x-forwarded-host - reqrep ^([^\ :]*)\ /documentserver-virtual-path/(.*) \1\ /\2 + http-request add-header X-Forwarded-Prefix /documentserver-virtual-path unless existing-x-forwarded-host + http-request replace-path /documentserver-virtual-path[/]?(.*) /\1 server onlyoffice-documentserver backendserver-address:80 diff --git a/iis/proxy-to-virtual-path/README.md b/iis/proxy-to-virtual-path/README.md index 3ef2f03..f474a0e 100644 --- a/iis/proxy-to-virtual-path/README.md +++ b/iis/proxy-to-virtual-path/README.md @@ -59,3 +59,6 @@ Add IIS server variables. You will need to add `HTTP_X_FORWARDED_PROTO`,`HTTP_X_ * In the right-side menu locate **Manage Server Variables** and click **View Server Variables**. * Use the **Add...** action and add the `HTTP_X_FORWARDED_PROTO`,`HTTP_X_FORWARDED_HOST`,`HTTP_THE_SCHEME` and `HTTP_THE_HOST` one after another. More information on adding the variables to the IIS server can be found [here](https://www.iis.net/learn/extensions/url-rewrite-module/setting-http-request-headers-and-iis-server-variables). + + +For example to work correctly, you need to add a virtual path to the documentserver configuration file %ProgramW6432%\ONLYOFFICE\example\config\local.json: server.siteUrl: "/documentserver-virtual-path/" diff --git a/iis/proxy-to-virtual-path/web.config b/iis/proxy-to-virtual-path/web.config index e4b4a61..0fcd453 100644 --- a/iis/proxy-to-virtual-path/web.config +++ b/iis/proxy-to-virtual-path/web.config @@ -29,7 +29,8 @@ - + + diff --git a/nginx/proxy-to-virtual-path.conf b/nginx/proxy-to-virtual-path.conf index 7c5cb20..b28145c 100644 --- a/nginx/proxy-to-virtual-path.conf +++ b/nginx/proxy-to-virtual-path.conf @@ -22,9 +22,10 @@ map $http_upgrade $proxy_connection { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $proxy_connection; -proxy_set_header X-Forwarded-Host $the_host/documentserver-virtual-path; +proxy_set_header X-Forwarded-Host $the_host; proxy_set_header X-Forwarded-Proto $the_scheme; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; +proxy_set_header X-Forwarded-Prefix /documentserver-virtual-path; server { diff --git a/traefik/proxy-to-virtual-path.toml b/traefik/proxy-to-virtual-path.toml index 66b943e..b1d3a63 100644 --- a/traefik/proxy-to-virtual-path.toml +++ b/traefik/proxy-to-virtual-path.toml @@ -21,7 +21,7 @@ defaultEntryPoints = ["http"] passHostHeader = true [frontends.docservice.headers.customrequestheaders] - X-Forwarded-Host = "{{TRAEFIK_HOST}}/documentserver-virtual-path" + X-Forwarded-Prefix = "/documentserver-virtual-path" [frontends.docservice.routes.vpath] rule = "PathPrefixStrip:/documentserver-virtual-path/" \ No newline at end of file