Saya menggunakan Jekyll
dan Vagrant
di mac saya. Saya menemukan bahwa Jekyll server
akan mengikat 0.0.0.0:4000
bukan 127.0.0.1:4000
. Juga gem server
akan mengikat ke alamat ini secara default. Saya masih dapat mengunjunginya melalui http://localhost:port
. Tetapi untuk Jekyll
, sepertinya pengaturan default (mis. 0.0.0.0:4000) memerlukan akses Internet. Saya tidak dapat berjalan Jekyll server
tanpa Internet. Apakah ini bug kecil?
Saya juga menggunakan Vagrant
. Saya telah mengatur port forwarding (8080 => 4000) di Vagrantfile, karena saya menginstal Jekyll
di Vagrant
mesin virtual dan mengujinya di bawah Macintosh. Jika saya menggunakan pengaturan default (0.0.0.0:4000), itu berfungsi. Saya dapat mengunjunginya dari safari saya dengan http://localhost:8080
. Tetapi jika tidak ada internet, saya tidak dapat mengikat ke 0.0.0.0:4000. Saya menggunakan jekyll server -H 127.0.0.1
untuk mengikat layanan 127.0.0.1:4000
sebagai gantinya, maka saya tidak dapat mengunjunginya melalui http://localhost:8080
.
Adakah yang bisa menjelaskan perbedaan antara 0.0.0.0, 127.0.0.1 dan localhost ? Dan adakah yang bisa menjelaskan mengapa perbedaan akan menyebabkan masalah ini ?
Jawaban:
127.0.0.1
biasanya alamat IP yang ditetapkan untuk "loopback" atau antarmuka hanya lokal. Ini adalah adapter jaringan "palsu" yang hanya dapat berkomunikasi dalam host yang sama. Ini sering digunakan ketika Anda ingin aplikasi yang mampu jaringan hanya melayani klien di host yang sama. Suatu proses yang mendengarkan127.0.0.1
untuk koneksi hanya akan menerima koneksi lokal pada soket itu."localhost" biasanya merupakan nama host untuk
127.0.0.1
alamat IP. Biasanya diatur dalam/etc/hosts
(atau setara dengan Windows bernama "host" di suatu tempat di bawah%WINDIR%
). Anda dapat menggunakannya sama seperti nama host lainnya - coba "ping localhost" untuk melihat bagaimana itu teratasi127.0.0.1
.0.0.0.0
memiliki beberapa arti berbeda, tetapi dalam konteks ini, ketika server diminta untuk mendengarkan0.0.0.0
itu berarti "mendengarkan pada setiap antarmuka jaringan yang tersedia". Adaptor loopback dengan alamat IP127.0.0.1
dari perspektif proses server terlihat seperti adaptor jaringan lainnya pada mesin, sehingga server disuruh mendengarkan0.0.0.0
akan menerima koneksi pada antarmuka itu juga.Mudah-mudahan itu menjawab sisi IP pertanyaan Anda. Saya tidak terbiasa dengan Jekyll atau Vagrant, tetapi saya menduga bahwa penerusan porta Anda
8080 => 4000
entah bagaimana terikat pada adaptor jaringan tertentu, sehingga tidak ada di jalur ketika Anda terhubung secara lokal ke127.0.0.1
sumber
ping localhost
tampaknya bekerja pada Windows bahkan tanpa file host menunjuk127.0.0.1
kelocalhost
.Dalam versi Jekyll saat ini, defaultnya adalah http://127.0.0.1:4000/ .
Ini bagus, jika Anda terhubung ke jaringan tetapi tidak ingin orang lain mengakses aplikasi Anda.
Namun mungkin Anda ingin melihat bagaimana aplikasi Anda berjalan pada ponsel atau dari beberapa laptop / komputer lain.
Dalam hal ini, Anda dapat menggunakannya
Ini mengikat aplikasi Anda ke host & penggunaan selanjutnya berikut untuk menghubungkannya dari beberapa host lain
sumber