Executando em porta diferente da 443: Desabilitar redirecionamento para URL sem porta

Eu alterei o app.yml
para

expose:
  - "20632:80"   # http
  #- "443:443" # https
  - "20633:443"

e quero abrir o Discourse via https://mydomain.com:20633, mas ele tenta redirecionar para https://mydomain.com, o que não funcionará.

Ao usar

expose:
  - "20632:20632"   # http
  #- "443:443" # https
  - "20633:20633"

o netstat -tulpn mostra que ele está escutando nessas portas, mas ao tentar acessar, ocorre um timeout.

Encontrei um tópico sobre servir o Discourse em uma subpasta Serve Discourse from a subfolder (path prefix) instead of a subdomain, que não é aplicável.

Também encontrei Install Discourse on a residential internet with Cloudflare Tunnel.
Isso vai na direção certa, mas não é exatamente o que preciso.

PS Desculpe por remover os links do fórum, mas não consigo postar de outra forma.

1 curtida

Não oferecemos suporte à execução em portas não padrão. Se as portas 80/443 já estiverem ocupadas, você precisará usar um servidor separado onde elas não estejam ou executar um proxy reverso de seus outros serviços e do Discourse.

3 curtidas

Às vezes, “nós não suportamos” significa “isso está além da ajuda que você pode esperar aqui”, mas desta vez significa “você está perdendo seu tempo até mesmo tentando”.

1 curtida

As portas não estão “ocupadas” da maneira usual. O Discourse pode usar as portas 80 e 443 nesse sistema, ele já está rodando em um servidor separado por conta própria. Fico preso na etapa de desabilitar o redirecionamento/remover a porta na URL e tudo funcionaria como esperado.

1 curtida

Você não pode impedir esse redirecionamento.

Se você não puder publicar nas portas padrão, então não funcionará. Suas opções aqui são usar um servidor onde :80/443 estejam disponíveis, ou escolher uma plataforma de discussão alternativa.

1 curtida

Você pode me ajudar com a configuração do proxy reverso nginx?

Tentei várias opções sem sucesso

server {
    listen 20633 ssl;
    server_name mydomain.com;
	
	ssl_certificate /etc/letsencrypt/live/mensa.myftp.org/fullchain.pem;
	ssl_certificate_key /etc/letsencrypt/live/mensa.myftp.org/privkey.pem;

    location / {
        # Remove a porta do URL proxy_pass usando uma expressão regular
        # A parte capturada da expressão regular ($1) será substituída no URL proxy_pass
        # O IP e a porta reais do servidor de backend são especificados separadamente na diretiva proxy_pass
        proxy_pass http://192.168.178.31:80/;
		#$request_uri;
		proxy_redirect http://192.168.178.31:80/ $scheme://$host:20633/;
		#return 301 $scheme://$host:$server_port/home;
		#proxy_redirect http://192.168.178.31:20633 $scheme://$host:80;
        
        # Preserva o cabeçalho Host enviado pelo cliente para o servidor de backend
        #proxy_set_header Host $host;
		proxy_set_header Host $http_host;

    }
}
1 curtida

Veja o guia em Execute outros sites na mesma máquina do Discourse.

2 curtidas

Esse tutorial é para rodar no mesmo servidor via socket Unix. Existe também configuração para rodar o proxy reverso em um sistema diferente com porta diferente? Acho que deveria existir, pois esse caso pode ocorrer com mais frequência. No outro host eu já tenho um certificado.
Apenas para esclarecer: essa configuração é apenas para testes. Em produção, rodará na porta 443, mas para desenvolvimento e testes, uma VM em casa é completamente suficiente e economiza o custo de alugar um servidor nesse meio tempo.