Pertanyaan Di / etc / hosts / file saya di Linux / OSX, bagaimana saya melakukan subdomain wildcard?


Saya perlu menguji sub-domain di localhost saya. Bagaimana saya dapat secara efektif memiliki hasil penambahan ini *.localhost.com untuk saya /etc/hosts/ mengajukan?

Jika itu tidak mungkin, bagaimana saya mengatasi masalah ini? Saya perlu menguji sub-domain wildcard pada penduduk lokal saya. Ini adalah devserver Django, bisakah server dev Django menangani sub-domain? Dapatkah beberapa perangkat lunak / routing lain memberi saya hasil akhir yang saya inginkan?


151
2018-03-02 16:43




Milik pengguna super? - Paul R
Saya tahu orang mengatakan itu tidak mungkin! Tapi bagaimana saya melakukannya juga! Apa yang ada di luar / etc / hosts / yang bisa saya gunakan untuk mendapatkan efeknya. Saya sedang menguji server pengembangan. - MikeN
pada pengguna super: unix.stackexchange.com/questions/3352/… - Ciro Santilli 新疆改造中心 六四事件 法轮功
Karena sebagian besar jawaban berfokus pada pertanyaan pertama Anda (wildcard subdomain localhost), saya akan menjawab pertanyaan sekunder Anda sebagai komentar: ya, server dev Django sangat mampu menangani subdomain localhost, Anda hanya perlu meyakinkan browser dan OS Anda untuk mengirim lalu lintasnya (menggunakan salah satu dari berbagai solusi di bawah)! - hheimbuerger


Jawaban:


Saya telah menulis proxy dns dengan Python. Ini akan membaca entri wildcard di / etc / hosts. Lihat disini: https://github.com/hubdotcom/marlon-tools/blob/master/tools/dnsproxy/dnsproxy.py


40
2018-05-02 09:30



Ini sempurna! Saya telah mencari solusi sederhana seperti ini untuk waktu yang lama (Bekerja pada OSX Mavericks BTW) - Billy Moon
sekarang, jika kita bisa saja pip install saya t :) - metakermit
Saya menginstal ini, melakukan semuanya dan menjalankannya, tetapi tidak memblokir situs. - DisplayName
Tidak dapat mengomentari ini cukup. Saya membutuhkan ini selamanya, menemukan permata pertanyaan dan jawaban ini, dan saya sedikit hacker Python, dan ini adalah berita gembira yang rapi. Terima kasih telah berbagi! - Farley


Memasang dnsmasq (Saya melakukan ini pada semua desktop Linux saya sebagai cache DNS lagian). Di dnsmasq.conf tambahkan baris:

address=/localhost.com/127.0.0.1

144
2018-03-03 02:37



Cemerlang! Catatan untuk pengguna Mac, ini sesederhana ini: 1. sudo port install dnsmasq 2. edit /opt/local/etc/dnsmasq.conf 3 sudo port load dnsmasq - tomc
OSX dengan minuman: sama seperti di atas tetapi menyeduh menginstal dnsmasq - Matt Humphrey
fyi brew> port (saran re @MattHumphrey) - electblake
Contoh ini tidak berhasil untuk saya, mungkin karena saya menggunakannya vagrantup.com untuk porsi lokal. Jangan khawatir, saya sudah mengubah IP ke yang benar 192.168.50.11 tetapi DNS tidak menyelesaikan. Setiap ide, apakah contoh ini benar untuk "non-127.0.0.1" IP? - Brian
Kiat yang bagus. Untuk desktop Ubuntu 14.04 (yang menjalankan dnsmasq secara default), buat file yang dipanggil /etc/NetworkManager/dnsmasq.d/dnsmasq-localhost.conf dan meletakkan garis address=/localhost.com/127.0.0.1 di dalamnya, lalu mulai ulang. - user38397


Tidak mungkin untuk menentukan wildcard di /etc/hosts mengajukan. Entah menentukan hostname yang diperlukan secara eksplisit atau alternatif menyiapkan server nama lokal dengan aturan yang sesuai.


53
2018-03-02 16:46





Anda perlu mengatur server DNS dan memiliki masing-masing klien gunakan untuk resolusi. Server itu sendiri bisa menjadi sesuatu yang "ringan" seperti dnsmasq atau seberat MENGIKAT.


14
2018-03-02 20:28



+1 untuk dnsmasq, yang benar-benar terdokumentasi dengan baik dan mudah digunakan - David Schmitt
dnsmasq tidak dapat melakukan ini. - DisplayName
Apa bagian dari perilaku yang dijelaskan dalam --address= bagian dari halaman manual dnsmasq.conf tidak mencakup use case yang dijelaskan di atas? - Gerald Combs


Alur Kerja Sederhana (tidak perlu menginstal apa pun)

Saya pribadi suka membuat file PAC untuk itu dan membuat browser saya cukup menggunakannya.

Langkah 1: buat file misalnya: *.proxy.pac* suatu tempat (saya menggunakan $home map)

Langkah 2: tempel kode ini (contoh dengan port 8000):

function FindProxyForURL(url, host) {
  if (shExpMatch(host, "*localhost")) {
    return "PROXY localhost:8000";
  }
  return "DIRECT";
}

Langkah 3: Jadikan Browser Anda menggunakan file PAC ini.

Youtube Video untuk PAC & Firefox 

Langkah 4: Sekarang Anda dapat menguji aplikasi Anda dengan mengakses: http://mysubdomain.localhost/

Langkah 5: Nikmati :)


8
2018-03-02 16:47



Mungkin ada baiknya disebutkan bahwa ini hanya akan mempengaruhi browser Anda. Program lain (seperti wget, tidak akan terpengaruh oleh ini). Itu bukan masalah, tapi mungkin lebih baik untuk menyebutkan ini. - Willem Van Onsem


Anda tidak dapat menggunakan wildcard di /etc/hosts.

Coba lihat sini untuk panduan yang baik tentang cara menyelesaikan pada OS X menggunakan BIND, server DNS yang built-in tetapi tidak aktif, dan Apache.


3
2018-04-16 09:11



Apache tidak ada hubungannya dengan subdomain. - Anonymous


Saya sudah merapikan proyek lama saya:

https://github.com/airtonix/avahi-aliases

Persyaratan:

  • linux dimana avahi dan python-avahi dapat diinstal
  • Anda baik-baik saja dengan .local domain (avahi tidak mendukung jenis lain)

Keuntungan menggunakan dnsmasq atau proksi dns python:

  • pengguna avahi / bonjour lainnya di jaringan lokal Anda dapat menyelesaikan alias yang Anda buat dan umumkan ke jaringan (asalkan Anda mengizinkan akses ke port 5353)

3
2018-03-06 22:02





Solusi berbasis DNS ini bekerja dengan sempurna dalam kasus saya, tanpa perlu menginstal apa pun: https://gist.github.com/fedir/04e60d679d5657d1f9f9aa10b3168282 (Mac OSX 10.9)


3
2018-03-02 16:49



Solusi luar biasa untuk Mac OSX. - iDev247
Tautan mati, perbarui tautan Anda, solusi Anda, atau dengan cara lain, batalkan jawaban ini. Tepuk tangan. - Relic
Selesai (cadangan ditambahkan) - Fedir RYKHTIK


Jawaban singkat:

File / etc / hosts / Anda tidak akan membiarkan Anda menggunakan wildcard atau nomor port. Anda perlu membuat satu entri untuk setiap subdomain Anda


2
2018-03-02 20:20



Apa yang memungkinkan Anda menentukan nomor port? Bukan DNS AFAIK. - ptman


Jawaban singkatnya adalah Anda tidak. Jawaban yang lebih panjang adalah Anda harus lebih jelas tentang apa yang sebenarnya ingin Anda capai, karena mungkin ada cara yang lebih baik, dan cara lain untuk mencapainya.

Untuk web-hosting (saya belum pernah melihatnya digunakan sebaliknya) dilakukan dalam DNS dalam kombinasi dengan server web virtual hosting yang sadar. Untuk informasi lebih lanjut tentang data DNS wildcard (Wikipedia), dan sebuah artikel Hosting wildcard dengan Apache dan Bind untuk Linux menggunakan bind dan Apache.

Paling buruk, Anda bisa menggunakan server DNS lokal saya kira.


2
2018-02-13 13:35





Jika ingin digunakan dnsmasq dengan NetworkManager Anda dapat (atau bahkan harus?) Mulai dnsmasq dari NetworkManager dengan menambahkan

dns=dnsmasq

untuk /etc/NetworkManager/NetworkManager.conf. Kemudian konfigurasi dnsmasq pergi ke /etc/NetworkManager/dnsmasq.conf atau /etc/NetworkManager/dnsmasq.d/ resp.


2
2018-04-24 17:32