Declaração Oficial do Discourse sobre configuração em subpastas
Nós oferecemos suporte a configurações em subpastas para nossos clientes hospedados no nível empresarial e acima. Devido à alta complexidade técnica de configuração, recomendamos fortemente que você não use essa configuração, a menos que seja muito experiente em configurações personalizadas de subpastas.
É fundamental que você tenha um profundo entendimento de
- Configuração do NGINX no container Docker do Discourse
- Encaminhamento seguro de IPs originais usando cabeçalhos personalizados na cadeia de proxies
- Limitação de taxa no servidor proxy frontal
Se tudo isso parecer estranho e complicado para você, recomendamos fortemente que evite essa configuração.
Para servir o Discourse a partir de uma subpasta (também conhecida como prefixo de caminho) no seu domínio, como https://www.example.com/=SUBFOLDER=, veja como fazer isso!
Configuração do Docker
Na seção env do arquivo yml do seu container Docker, adicione a configuração DISCOURSE_RELATIVE_URL_ROOT com a subpasta que deseja usar. Certifique-se de que ela não termine com /.
Editar isso atualizará todo o guia.
env:
...
DISCOURSE_RELATIVE_URL_ROOT: /=SUBFOLDER=
A seção run precisa de algumas alterações para enviar todas as rotas do Discourse para o lugar certo. Aqui está uma seção run completa com suporte a subpastas:
run:
- exec:
cd: $home
cmd:
- mkdir -p public/=SUBFOLDER=
- cd public/=SUBFOLDER= && ln -s ../uploads && ln -s ../backups
- replace:
global: true
filename: /etc/nginx/conf.d/discourse.conf
from: proxy_pass http://discourse;
to: |
rewrite ^/(.*)$ /=SUBFOLDER=/$1 break;
proxy_pass http://discourse;
- replace:
filename: /etc/nginx/conf.d/discourse.conf
from: etag off;
to: |
etag off;
location /=SUBFOLDER= {
rewrite ^/=SUBFOLDER=/?(.*)$ /$1;
}
- file:
path: /etc/nginx/conf.d/outlets/server/set-real-ip-from-webroot.conf
chmod: 644
contents: |
set_real_ip_from 123.456.789.ABC; # o endereço IP do seu proxy upstream
- file:
path: /etc/nginx/conf.d/outlets/server/real-ip-header.conf
chmod: 644
contents: |
real_ip_header x-forwarded-for;
Para mais detalhes sobre como preservar o endereço IP do usuário final, consulte Handling the "chain of trust" of the end user's real IP.
Após fazer essas alterações, inicialize seu container Docker como de costume, ou reconstrua se estiver modificando um container existente.
./launcher bootstrap app
ou
./launcher rebuild app
Anexado está um exemplo completo de arquivo yml de um container independente:
subfolder-sample.yml (3,1 KB)
Preocupações com limitação de taxa
Se você está adotando essa configuração, provavelmente desejará limitar a taxa de solicitações antes que elas cheguem ao NGINX no container, o que significa que provavelmente evitará usar nosso modelo de limitação de taxa. É muito difícil configurar o NGINX no container para limitar com base em um IP remapeado, e isso exigiria alterações complexas no modelo.
Postagens existentes
Se você fez isso com um site existente que estava em um subdomínio, perceberá que seus uploads estão quebrados. Há uma ferramenta que pode ajudar a corrigir todos os caminhos para incluir a subpasta. Primeiro, entre no container Docker e navegue até o diretório do Discourse:
cd /var/discourse
./launcher enter app
cd /var/www/discourse
Em seguida, execute o comando de remapeamento após fazer um backup:
RAILS_ENV=production bundle exec script/discourse remap '/uploads' '/=SUBFOLDER=/uploads'
Veja também: Use a subfolder (path prefix) to serve Discourse with multiple servers sharing a domain para configurações mais exóticas.
robots.txt
Agora que o Discourse está rodando em uma subpasta, ele não pode mais servir seu arquivo robots.txt para controlar quais rotas são rastreadas pelos robôs de busca. Os rastreadores estarão olhando para o arquivo robots.txt do seu site principal (https://www.example.com/robots.txt). Você precisa copiar o conteúdo do arquivo robots.txt do Discourse (encontrado em https://www.example.com/=SUBFOLDER=/robots.txt) e colocá-lo no arquivo robots.txt do seu site principal.