How to configure Collabora/CODE on MS Windows server behind IIS+ARR reverse proxy

I’m trying to configure Nextcloud + Collabora on a Windows Server. Both applications run in Docker containers. Both are visible to the local machine via HTTP, and I’m setting them up to be visible externally via HTTPS using ARR’s reverse proxy. However, Collabora uses URLs with double slashes, e.g.

https://collabora.mydomain/cool/https://nextcloud.mydomain/index.php/apps/richdocuments/wopi/files/11195_ocgyb4pvepal?access_token=***&access_token_ttl=0&permission=edit/ws

Unfortunately, ARR normalizes all URLs, replacing multiple slashes with a single slash. As a result, requests to the Collabora server are invalid (.../https:/collabora.mydomain...). I’ve tried numerous rules replacing http:/colabora with URL-encoded sequences (%2A%2F%2F), escape sequences (:\/\/), using {UrlEncode} function, etc., but nothing works. Tracing failed requests shows that when any of the rules are applied, ARR decodes and normalizes the URL, replacing the double slash with a single slash, just after applying the rules.

Has anybody managed to make working CODE installation behind ARR reverse proxy?

hii @pik256

IIS + ARR can’t handle Collabora’s double-slash URLs (/cool/https://...) because it always normalizes ///. That breaks WOPI paths, so CODE fails.

In short:

  • IIS/ARR automatically collapses //, and there’s no reliable way to disable it.

  • Allow double escaping doesn’t help — ARR normalizes paths before rewrite rules run.

  • Only real fixes are:

    1. Use another proxy (Nginx or Apache) that preserves //.
    2. Or run Collabora directly with HTTPS, bypassing ARR.

IIS + ARR is not recommended for CODE because of this unavoidable path normalization issue.

there is this recnet problem i got to know https://serverfault.com/questions/1195759/how-to-prevent-microsoft-application-request-routing-from-url-normalization?utm_source=chatgpt.com

Thanks for the reply, but the Serverfault issue is actually mine. I asked there and didn’t get a solution, so I’m asking here.

Yes @pik256, I saw your discussion, but that doesn’t seem to resolve the issue :slightly_smiling_face:

I already explained the reason in my previous thread.

Have you tried using a different proxy?