Dodaj subdomenę do adresu URL hosta lokalnego

104

Piszę aplikację internetową, która zachowuje się różnie w zależności od prefiksu adresu URL. Format jest taki:

   https://myprefix.mycompany.com

Aplikacja internetowa zachowuje się inaczej w zależności od myprefix. Moja aplikacja internetowa wyodrębnia tę część z adresu URL i działa zgodnie z nią.

Jednak kiedy testuję na moim lokalnym, używam adresu localhost:

   https://localhost:1234

Nie radzę robić czegoś takiego:

   https://myprefix.localhost:1234

Jaki jest najlepszy sposób na przetestowanie tego scenariusza?

Wielkie dzięki

Kevin
źródło
Oto rozwiązanie tego problemu stackoverflow.com/a/29629675/2950006
Mickel Chowdhury

Odpowiedzi:

149

Niestety, ponieważ localhostnie jest to właściwa domena, nie możesz dodać do niej subdomeny w ten sposób. Państwo może jednak oszukać komputer do myślenia, że jest właścicielem domeny specyficzne i rzeczy testowych w ten sposób. Na przykład, jeśli masz system operacyjny oparty na UNIX, otwórz (jako root) plik /etc/hostsi dodaj linię (lub wiersze) w następujący sposób:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com

Twój komputer będzie teraz traktował oba te elementy example.comi subdomain.example.comjako należący do siebie. Jeśli odwiedzisz którąkolwiek w swojej przeglądarce internetowej, będą one zasadniczo działać tak samo, jak localhost, ale Twój serwer internetowy zobaczy prawidłową domenę w nagłówku Host.

Matt Patenaude
źródło
Wielkie dzięki za odpowiedź. Właśnie tego chcę. Jednak moja aplikacja internetowa działa na porcie, powiedzmy 1234. Szukałem dookoła i ludzie mówili, że nie ma sposobu, aby określić numer portu w / etc / hosts. Jaki jest najlepszy sposób określenia portu?
Kevin
7
Będziesz musiał po prostu użyć portu w swoim adresie URL jak zwykle, np http://subdomain.example.com:1234/whatever. Port jest całkowicie oddzielony od domeny (domeny służą do identyfikacji komputera, porty służą do identyfikowania programu na komputerze, z którym ma się komunikować).
Matt Patenaude
Alternatywnie, jeśli możesz uruchomić oprogramowanie jako root (do testowania), możesz po prostu użyć portu 80, który jest domyślny, więc nie będziesz musiał go określać.
Matt Patenaude,
4
Można by po prostu wymienić nazwy domen po adresie IP: 127.0.0.1 example.com sub.example.com sub2.example.com...
automaton
6
Działa to również w przypadku okien. Plik hosta w systemie Windows znajduje się pod adresem: C:\Windows\System32\drivers\etc\hosts. Będziesz musiał skopiować plik w inne miejsce, które ma niższe uprawnienia (na przykład na pulpit), aby go edytować, a następnie wkleić z powrotem do folderu (aby obejść uprawnienia).
Lindsay-Needs-Sleep
36

Nie jestem pewien co do tego samego zachowania w oknach. Pracuję na Linux Mint.

Możesz używać lvh.me:portjako domeny lokalnej. Możesz sobie wyobrazić, że Twój projekt jest wdrażany localhost:portw tej domenie.

Zamiast sub.localhost:portużywaćsub.lvh.me:port

UPD

sub.localhost:portdziała na chrome. Firefox automatycznie dodaje www. na początku wpisanej domeny, która może powodować problemy z testowaniem subdomen

Wasilij
źródło
Mogę potwierdzić, że działa to również w systemie Windows. Przeglądarki Internet Explorer, Edge, Firefox i Chrome działają bez zarzutu!
Jose A
Używałem Firefoxa i Chrome Tip, które uratowały mi dzień, dzięki!
ZekeMidas
2
Aby uzyskać dodatkową elastyczność, możesz również skorzystać z usług nio.io lub xip.io. Pozwalają zmapować dowolny adres IP do dowolnej subdomeny. Na przykład Twoi koledzy mogą również używać tego samego adresu URL, aby uzyskać dostęp do Twojej aplikacji. Np. Jeśli adres IP twojej stacji roboczej to 172.16.0.42, możesz użyć https://myprefix.myapp.172.16.0.42.nip.io:1234z twojego komputera lub z innych komputerów w intranecie.
mh8020,
6

W przypadku użytkowników systemu Windows, na podstawie tej odpowiedzi i tego komentarza, możesz to osiągnąć, dodając porty do hosta lokalnego za pośrednictwem pliku hosts znajdującego się w tej ścieżce:

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

I dołącz do niego wiersze, takie jak następujące:

127.0.0.1    example.com
127.0.0.1    subdomain.example.com
Shimmy Weitzhandler
źródło
1

Rozwiązanie jednowierszowe dla systemu Windows

Otwórz PowerShell jako administrator i uruchom następujące polecenie, zastępując sub.mydomain.comje dowolnymi.

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

Awaria:

  • `n - Nowa linia
  • 127.0.0.1 - adres sprzężenia zwrotnego
  • sub.mydomain.com - Nazwa domeny
  • | Out-File C:\Windows\System32\drivers\etc\hosts - przeprowadź przewód do hosts
  • -encoding ASCII - prawidłowe kodowanie
  • -append- dołącz do końca pliku (ważne!)
Richard Dunn
źródło
1

Powinieneś używać .testdomeny do takich celów. Po to .testjest. localhostnie powinien mieć żadnych subdomen.

Takie postępowanie narusza zatwierdzone standardy RFC. localhostma rekord A, aw środowiskach IPv6 - rekord AAAA. Wszystkie inne typy rekordów DNS, w tym SOA, są zabronione.

Bez rekordu SOA nie może to być wierzchołek strefy, który ma rekordy podrzędne, więc żadne subdomeny ani delegacje nie są dozwolone. Nawet ostatnia wersja robocza RFC zatytułowana Let localhost be localhost jest z tym zgodna.

MR.X
źródło