Primeiro, este é um caso de borda muito específico da minha configuração, com a subpasta /f.
O link do Discourse no menu hambúrguer aponta para /faq, sem a subpasta, porque /faq começa com /f.
Considerando esta citação:
Acho que poderíamos mudar
const found = url.startsWith(baseUri);
para algo como
const found = url === baseUri || url.startsWith(`${baseUri}/`);
Assim, ele corresponderia a /f, /f/, /f/faq, mas não a /faq, adicionando corretamente o baseUri ao último.
De qualquer forma, a rota em si também não funciona; /f/faq retorna um erro 404, então acredito que haja uma lógica semelhante no nível do roteador. Eu já havia notado anteriormente que /f/following também não funcionava (cc @merefield).
Por fim, mudei a configuração do site faq url para /f/guidelines como uma solução alternativa, o que corrigiu o link e o erro 404, mas gerou uma pequena estranheza: termos tanto “Guidelines” quanto “FAQ” aparecem na barra de navegação, ambos apontando para o que está definido em faq url (você pode verificar na página real):
Desculpe por este tópico com tantas coisas diferentes, com 3 problemas, mas acho que estão tão relacionados que seria difícil separá-los adequadamente.
Sobre o erro 404 em /f/faq e /f/favicon/proxied, ao fazer CURL nessas rotas dentro do contêiner, contornando o Nginx, funciona. Consegui corrigir alterando a diretiva location descrita em Serve Discourse from a subfolder (path prefix) instead of a subdomain de location /subfolder para location /subfolder/.
A barra de navegação mostrando tanto as Diretrizes quanto o FAQ é o comportamento esperado; é improvável que o usuário substitua a url do faq pela mesma URL.