Saltar para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://docs.replit.com/llms.txt

Use this file to discover all available pages before exploring further.

Como a Replit executa seus projetos em um ambiente na nuvem, as portas funcionam de forma diferente na Replit do que no seu computador local. (Se você precisar de uma explicação mais básica sobre o que são portas TCP, comece aqui.) Em um computador, você tem apenas uma camada de gerenciamento de portas: seus programas definem uma porta em que ficam escutando e, quando o tráfego chega nessa porta do seu computador a partir da internet, ele é roteado para o processo adequado.
computador
A parte 0.0.0.0 é o endereço, ou host. Se um processo está escutando em 0.0.0.0, isso significa que ele deve escutar em todas as interfaces de rede — o que significa que, se outro computador (na internet) enviar uma solicitação para o endereço IP do seu computador, ele a receberá. Portanto, escutar em 0.0.0.0 significa que esses processos estão acessíveis à internet pública (se o seu computador estiver conectado). A maioria dos frameworks de programação não escuta em 0.0.0.0 durante o desenvolvimento, porque você não necessariamente quer que seu trabalho seja exposto ao público enquanto está trabalhando nele, por questões de privacidade e segurança. Em vez disso, eles escutam em um endereço diferente — 127.0.0.1, também conhecido como localhost. Isso significa que apenas aquele computador pode fazer solicitações para essa porta.
Portas localhost são visíveis apenas no computador que as está hospedando.
Na Replit, para que um processo em execução seja acessível no webview ou por meio de uma solicitação externa, ele precisa ter uma porta externa definida. Isso ocorre porque a “porta interna” que os processos normalmente usam é visível apenas de dentro do ambiente de nuvem isolado que a Replit fornece. Essa porta interna deve ser conectada a uma porta acessível externamente para enviar o tráfego correto aos seus programas. Mesmo que seu processo escute em uma porta normalmente disponível ao público, como 0.0.0.0, ela ainda precisa ser vinculada a uma porta externa.
Portas externas encaminham o tráfego para portas internas, onde os programas escutam.
A Replit faz isso vinculando portas externas a portas internas específicas — por exemplo, no diagrama acima, a porta externa :80 está vinculada à porta interna :3000. Isso significa que qualquer tráfego que o Replit App receber na porta 80 será direcionado para a porta interna 3000. Essa configuração é registrada na seção [[ports]] do arquivo de configuração .replit. Por padrão, a Replit vincula a primeira porta aberta à porta externa padrão 80, o que permite que esse processo fique disponível no domínio sem um endereço de porta (por exemplo, customdomain.com/ em vez de customdomain.com:3000/). Portas internas adicionais que são abertas são vinculadas a outras portas externas disponíveis (veja a lista completa abaixo).

Preview

Na ferramenta Preview, você pode alterar qual porta externa o webview está renderizando clicando no domínio e selecionando uma porta diferente. Você também pode abrir a ferramenta de rede a partir do ícone de “engrenagem” para mais detalhes.
Clicar no domínio no webview permite escolher qual porta visualizar.

Porta padrão

A porta :80 é a “porta padrão” para tráfego HTTP, portanto, o tráfego HTTP enviado para o domínio raiz será automaticamente roteado para a porta 80. O caminho da porta não é exibido na URL para a porta 80 por esse motivo. Portas diferentes de :80 aparecem no caminho do domínio (por exemplo, customdomain.com:4200/). (A Replit fornece TLS por padrão, portanto, tecnicamente será pela porta 443, que é a porta padrão para HTTPS. Para todos os efeitos práticos, você pode tratá-las como intercambiáveis.)

Ferramenta de rede

Para mais detalhes sobre a configuração de portas e redes, você pode abrir a ferramenta de rede. Ela exibe o status das portas abertas no seu Replit App, a qual porta externa estão vinculadas, e permite adicionar ou remover configurações.
A ferramenta de rede exibe sua configuração de portas.

Publicação

As implantações de Autoscale e Reserved VM suportam apenas uma única porta externa exposta, e a porta interna correspondente não deve usar localhost. Se você expuser mais portas, ou expuser uma única porta no localhost, seu app publicado falhará. Uma maneira fácil de garantir que suas implantações Autoscale funcionem como esperado é remover todas as entradas externalPort para as portas na sua configuração exceto a porta do serviço com o qual você quer interagir pela internet.

Depuração

Um motivo comum para algo não funcionar como esperado é que, embora a configuração da porta pareça correta, seu programa na verdade está usando uma porta diferente. Por exemplo, se sua configuração for:
[[ports]]
internalPort = 3000
externalPort = 80
Então o tráfego da internet para a porta 80 irá para a porta interna 3000. No entanto, se o seu programa na verdade não estiver escutando na porta 3000, mas em outra porta (como 8080), parecerá que nenhum tráfego está chegando. Isso pode acontecer se você alterar a porta no seu código sem alterar a porta correspondente na sua configuração, ou ao copiar e colar a configuração de um projeto para outro.
Os programas podem alterar as portas em que escutam.
Cada framework tem portas padrão diferentes em que escuta — por exemplo, Flask usa 5000, React usa 3000 e Laravel usa 8000. Certifique-se de que a porta correta está configurada!

Preferências

A Replit vincula automaticamente as portas abertas no seu Replit App às portas externas disponíveis quando são abertas, e registra essa vinculação no arquivo de configuração .replit. No entanto, isso não acontece por padrão para portas internas que abrem no localhost, porque os serviços que normalmente executam no localhost geralmente assumem que serão acessíveis apenas no mesmo computador que o processo em execução (portas localhost são visíveis apenas para o mesmo computador que executa o processo). Isso significa que esses serviços geralmente não são tão seguros quanto serviços criados com a premissa de que estarão disponíveis para a internet pública. Você sempre pode substituir esse comportamento definindo a opção de configuração exposeLocalhost como true para a porta que deseja expor. Se você quiser sempre expor portas localhost por padrão, pode definir sua configuração de “encaminhamento automático de portas” na ferramenta User Settings como “All ports”. Se você quiser nunca criar configuração para portas que são abertas e controlar manualmente a configuração de portas de todos os seus Replit Apps, pode definir essa opção como “never”.

Portas suportadas

O Replit App definirá a porta 80 como porta externa padrão quando a primeira porta for aberta. Um Replit App pode expor 3000, 3001, 3002, 3003, 4200, 5000, 5173, 6000, 6800, 8000, 8008, 8080, 8081 como portas externas adicionais. As portas 22 e 8283 não podem ser encaminhadas, pois são usadas internamente.

Configuração [[ports]] do .replit

Tipo: {localPort, externalPort, exposeLocalhost} A configuração [[ports]] permite configurar qual porta HTTP expor para a saída web do seu app. Por padrão, qualquer porta HTTP exposta com host 0.0.0.0 será exposta como a saída web do seu Replit App. Portas adicionais podem ser servidas sem substituir a porta padrão adicionando uma nova entrada [[ports]] ao seu arquivo .replit. É obrigatório especificar tanto uma entrada localPort quanto externalPort. Você pode adicionar várias portas extras incluindo múltiplas entradas [[ports]] no seu arquivo .replit, conforme definido abaixo.

localPort

Determina qual porta a Replit vinculará a uma porta externa.

externalPort

Determina qual porta deve ser exposta como a porta acessível publicamente para aquela porta local.
[[ports]]
localPort = 3000
externalPort = 80
Se você quiser nunca expor uma porta específica, pode manter a configuração localPort sem adicionar um externalPort:
[[ports]]
localPort = 3000

exposeLocalhost

Determina se uma porta interna usando localhost pode ser vinculada a uma porta externa. Pode ser true, false ou null.
[[ports]]
localPort = 3000
externalPort = 80
exposeLocalhost = true