Czy mogę zmapować nazwę hosta * i * port za pomocą / etc / hosts? [Zamknięte]

189

Czy mogę zmapować adres IP, taki jak 127.0.0.1nazwa domeny i port?

Na przykład, chciałbym mapować 127.0.0.1doapi.example.com:8000

Carson
źródło
6
Nie można zmapować numeru portu w / etc / hosts. Zamiast tego możesz zdefiniować jako 127.0.0.1 api.mydomain.comi uzyskać do niego dostęp w przeglądarce, np.api.mydomain.com:8080
Fizer Khan
Czytałem gdzieś, że dns to obsługuje. Możesz mieć rekord, który mówi na www.example.com, http jest na porcie 80, a także rekord A, który mówi, że adres to 127.0.0.1, powiedział również, że nie był dobrze obsługiwany. Po tym niewiele się mówiło.
ctrl-alt-delor

Odpowiedzi:

185

Nie, to niemożliwe. Port nie jest częścią nazwy hosta, więc nie ma znaczenia w hostspliku -f.

Mata
źródło
134

Jeśli naprawdę musisz to zrobić, użyj odwrotnego proxy.

Na przykład z nginx jako odwrotnym proxy

server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}
Eric Fortis
źródło
4
Myślę, że linia proxy_pass powinna wyglądać tak: proxy_pass http://127.0.0.1:8000;Mam „nieprawidłowy prefiks URL” na nginx 1.4.3.
Nobu
dzięki za tę wspaniałą wskazówkę! proste rozwiązanie dla większości serwerów.
mikachoskopy
Używam tej sztuczki do mapowania portów komputera zdalnego (np. Cloud.app:80, podczas gdy rzeczywisty port to 8080). Bardzo przydatny do testowania węzłów zbieżności klastra, ale uzyskując do nich dostęp przy użyciu tego samego podstawowego adresu URL. Dzięki!
Gábor Nagy
9
Miałem w zasadzie ten sam problem, a rozwiązanie korzystające z tego odwrotnego proxy jest naprawdę pomocne. Chociaż chciałem prostszego rozwiązania, więc stworzyłem to narzędzie: github.com/cristianoliveira/ergo. Mam nadzieję, że to jakoś pomogło :)
Cristian Oliveira
Dzięki @CristianOliveira! Pomogło mi to DUŻO :)
brunetton