Adicionar subdomínio ao URL do host local

97

Estou escrevendo um aplicativo da web que se comporta de maneira diferente dependendo de um prefixo de url. O formato é algo como:

   https://myprefix.mycompany.com

O aplicativo da web se comporta de maneira diferente com base em myprefix. Meu aplicativo da web extrai essa parte da URL e age sobre ela.

No entanto, quando eu testo no meu local, uso um endereço de host local:

   https://localhost:1234

Eu não poderia fazer algo como:

   https://myprefix.localhost:1234

Qual é a melhor maneira de testar esse cenário?

Muito Obrigado

Kevin
fonte
Aqui está a solução para este problema stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

Respostas:

139

Infelizmente, por localhostnão ser um domínio adequado, você não pode adicionar um subdomínio a ele dessa forma. Você pode , entretanto, enganar seu computador fazendo-o pensar que possui um domínio específico e testar as coisas dessa forma. Por exemplo, se você tiver um sistema operacional baseado em UNIX, abra (como root) o arquivo /etc/hostse adicione uma linha (ou linhas) como esta:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Seu computador irá agora tratar tanto example.come subdomain.example.comcomo pertencente a si mesmo. Se você visitar qualquer um deles em seu navegador, eles funcionarão da mesma forma, a princípio localhost, mas seu servidor verá o domínio correto no cabeçalho Host.

Matt Patenaude
fonte
Muito obrigado pela sua resposta. Isso é exatamente o que eu quero. No entanto, meu aplicativo da web é executado em uma porta, digamos 1234. Eu pesquisei e as pessoas disseram que não há como especificar um número de porta em / etc / hosts. Qual é a melhor maneira de especificar a porta?
Kevin
7
Você terá que apenas usar a porta em sua URL como de costume, por exemplo http://subdomain.example.com:1234/whatever,. A porta é totalmente separada do domínio (os domínios são usados ​​para identificar a máquina, as portas são usadas para identificar com qual programa na máquina se deve comunicar).
Matt Patenaude
Alternativamente, se você pode executar seu software como root (para teste), você pode apenas usar a porta 80, que é o padrão, então você não terá que especificar uma.
Matt Patenaude
4
Pode-se apenas listar os nomes de domínio após o endereço IP: 127.0.0.1 example.com sub.example.com sub2.example.com...
autômato
5
Isso também funciona para o Windows. O arquivo host do Windows está localizada em: C:\Windows\System32\drivers\etc\hosts. Você precisará copiar o arquivo para outro lugar que tenha menos permissões, (como sua área de trabalho), para editá-lo e colá-lo de volta na pasta (para contornar as permissões).
Lindsay-Needs-Sleep
33

Não tenho certeza sobre o mesmo comportamento no Windows. Estou trabalhando no linux mint.

Você pode usar lvh.me:portcomo um domínio local. Você pode imaginar que seu projeto está implantado localhost:portneste domínio.

Em vez de sub.localhost:portvocê usarsub.lvh.me:port

UPD

sub.localhost:porttrabalha na chrome. O Firefox adiciona www automaticamente. no início do domínio inserido que pode causar problemas com o teste de subdomínios

Vassily
fonte
Posso confirmar que isso funciona no Windows também. Os navegadores Internet Explorer, Edge, Firefox e Chrome funcionam perfeitamente!
Jose A de
Eu estava usando o firefox e o chrome tip salvou meu dia, obrigado!
ZekeMidas
2
Para flexibilidade adicional, você também pode usar os serviços nio.io ou xip.io. Eles permitem mapear qualquer endereço IP para qualquer subdomínio. Portanto, por exemplo, seus colegas também podem usar o mesmo URL para acessar seu aplicativo. Por exemplo, se o endereço IP da sua estação de trabalho for 172.16.0.42, você pode usar https://myprefix.myapp.172.16.0.42.nip.io:1234do seu PC ou de outros PCs da sua intranet.
mh8020
5

Para usuários do Windows, com base nesta resposta e de acordo com este comentário, você pode conseguir isso adicionando portas ao host local por meio do arquivo hosts que reside neste caminho:

C:\Windows\System32\drivers\etc\hosts

E acrescente linhas como as seguintes a ele:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com
Shimmy Weitzhandler
fonte
1

Solução One-Line para Windows

Abra o PowerShell como administrador e execute o seguinte comando, substituindo sub.mydomain.comcom o que você quiser.

"`n127.0.0.1    sub.mydomain.com" | Out-File C:\Windows\System32\drivers\etc\hosts -encoding ASCII -append

Demolir:

  • `n - nova linha
  • 127.0.0.1 - endereço de loopback
  • sub.mydomain.com - nome do domínio
  • | Out-File C:\Windows\System32\drivers\etc\hosts - canalize a corda para o hosts
  • -encoding ASCII - codificação correta
  • -append- anexar ao final do arquivo (importante!)
Richard Dunn
fonte
1

Você deve usar o .testdomínio para coisas assim. É para isso que .testserve. localhostnão é suposto ter subdomínios.

Fazer isso viola os padrões RFC aprovados. localhosttem um registro A e em ambientes IPv6, um registro AAAA. Todos os outros tipos de registro DNS, incluindo SOA, são proibidos.

Sem um registro SOA, não pode ser um ápice de zona com sub-registros, portanto, nenhum subdomínio ou delegação é permitido. Até mesmo o rascunho de RFC recente intitulado Let localhost be localhost é consistente com isso.

MR.X
fonte