Bisakah saya memetakan nama host * dan * port dengan / etc / hosts? [Tutup]

189

Bisakah saya memetakan alamat IP seperti 127.0.0.1ke nama domain dan port?

Sebagai contoh, saya ingin memetakan 127.0.0.1keapi.example.com:8000

Carson
sumber
6
Anda tidak dapat memetakan nomor port di / etc / hosts. Alih-alih, Anda dapat menetapkan 127.0.0.1 api.mydomain.comdan mengaksesnya di browser sepertiapi.mydomain.com:8080
Fizer Khan
Saya membaca suatu tempat yang dns mendukung ini. Anda dapat memiliki catatan yang mengatakan pada www.example.com http ada di port 80 dan juga catatan A untuk mengatakan bahwa alamatnya adalah 127.0.0.1 juga mengatakan itu tidak didukung dengan baik. Tidak banyak bicara setelah itu.
ctrl-alt-delor

Jawaban:

185

Tidak, itu tidak mungkin. Port bukan bagian dari nama host, jadi tidak ada artinya di hosts-file.

mata
sumber
134

Jika Anda benar-benar perlu melakukan ini, gunakan reverse proxy.

Misalnya, dengan nginx sebagai proxy terbalik

server {
  listen       api.mydomain.com:80;
  server_name  api.mydomain.com;
  location / {
    proxy_pass http://127.0.0.1:8000;
  }
}
Eric Fortis
sumber
4
Saya pikir garis proxy_pass akan terlihat seperti ini: proxy_pass http://127.0.0.1:8000;Saya mendapat "awalan URL tidak valid" di nginx 1.4.3.
Nobu
terima kasih atas tip yang luar biasa ini! solusi sederhana untuk sebagian besar server.
micahscopes
Saya menggunakan trik ini untuk memetakan port dari mesin jarak jauh (mis. Cloud.app:80 sedangkan port sebenarnya adalah 8080). Sangat berguna untuk menguji node Confluence dari sebuah cluster tetapi mengaksesnya pada URL dasar yang sama. Terima kasih!
Gábor Nagy
9
Saya pada dasarnya memiliki masalah yang sama dan solusi menggunakan reverse-proxy ini sangat membantu. Meskipun, saya ingin beberapa solusi yang lebih sederhana jadi saya membuat alat ini: github.com/cristianoliveira/ergo Saya harap ini membantu entah bagaimana :)
Cristian Oliveira
Terima kasih @CristianOliveira! Ini banyak membantu saya :)
brunetton