Menetapkan Banyak Alamat IP ke localhost OS X 10.6


9

Saya mencoba meng-host beberapa situs web secara lokal dengan HTTPS diaktifkan, tetapi untuk melakukan ini saya harus mengkonfigurasi mesin lokal saya untuk menggunakan beberapa alamat IP untuk localhost (saya percaya). Apakah ada cara untuk memiliki beberapa alamat IP yang diselesaikan secara lokal pada saat yang sama?

Saya menggunakan OS X 10.6 (edisi standar - bukan server), dan pengaturan server MAMP.

Terima kasih!

Jawaban:


3

Anda tidak memerlukan banyak ip untuk meng-host beberapa situs web di satu server web. Anda perlu menggunakan "Host Virtual" (dengan https jika Anda memerlukannya juga). Di sini ada panduan untuk host virtual di MAMP http://sawmac.com/mamp/virtual/


Untuk meng-host beberapa situs dengan HTTPS diaktifkan, saya percaya mereka masing-masing memerlukan alamat IP terpisah. Lihat: stackoverflow.com/questions/11217538/…
user1086746

@ user1086746 Apache mendukung TLS Server Name Indication, seperti halnya semua browser klien utama pada .. hampir semua OS yang bukan Windows XP. Jawaban yang seharusnya Anda dapatkan pada pertanyaan yang ditautkan adalah untuk ditetapkan NameVirtualHost *:443.
Shane Madden

@Shane yang masih tidak berfungsi saat berhadapan dengan banyak situs menggunakan HTTPS melalui alamat IP yang sama. Saya memposting apa yang akhirnya berhasil untuk saya.
user1086746

@ user1086746 Ini pasti bekerja; Saya kira Anda NameVirtualHosttidak cocok dengan <VirtualHost>blok Anda , jika Anda mengikat secara khusus ke 127.0.0.1. Tidak masalah dalam hal ini sejak Anda menemukan solusi yang berfungsi, tetapi NoNoNo benar - Anda tidak perlu IP tambahan.
Shane Madden

Yah, saya ingin ini berfungsi 'dengan benar' karena mengatur alamat IP tersebut adalah langkah tambahan. Saya memiliki 2 NameVirtualHosts seperti: NameVirtualHost *:80 NameVirtualHost *:443 dan telah mencoba menggunakan vhosts seperti: <VirtualHost _default_:443>dan <VirtualHost 127.0.0.1:443>, tetapi keduanya tidak akan menyediakan koneksi HTTPS setelah vhost yang terdaftar pertama. Saya dapat memberikan file ssl.conf dan vhost.conf lengkap jika Anda tertarik!
user1086746

22

Untuk alias localhost, Anda dapat menggunakan perintah terminal ini untuk membuat 'loopback':

ifconfig lo0 alias 127.0.0.2

Dengan setup alias localhost, Anda dapat membuat beberapa host virtual HTTPS sebagai berikut:

<VirtualHost 127.0.0.1:443> ...... </VirtualHost>
<VirtualHost 127.0.0.2:443> ...... </VirtualHost>

Anda juga dapat menginisialisasi host ini pada startup, jika diinginkan, melalui cron root:

sudo crontab -e
@reboot ifconfig lo0 alias 127.0.0.2

Semoga ini membantu siapa saja yang mengalami masalah yang sama dengan saya!


Menggunakan echo PASSWORDadalah ide yang buruk . Alternatif kasar adalah dengan meletakkan sesuatu di cron root seperti sudo crontab -edan @reboot ifconfig lo0 alias 127.0.0.2. Tentu ada solusi yang lebih elegan, tetapi segala sesuatu yang melibatkan kata sandi Anda dalam teks biasa tidak dapat diterima.
chmac

1
Wow, itu sangat menyenangkan! Saya menggunakan ini untuk penerusan port ssh . Ini memungkinkan penerusan port yang sama beberapa kali dengan mendengarkan pada alamat IP lokal yang berbeda. Misalnya ssh -L 127.0.0.2:443 foo:443 -L 127.0.0.3:443 beta.foo:443 user@host. Anda kemudian dapat menentukan nama host ke alamat IP lokal ini di /etc/hostsfile Anda jika diperlukan. Ternyata cukup berguna untuk pengembangan dan pengujian / remoting web, terutama jika Anda tidak dapat menggunakan port khusus untuk aplikasi Anda.
djule5

2

Anda tidak perlu menambahkan alamat IP tambahan ke host lokal di Linux atau Windows. Mereka akan merespons secara default, tanpa konfigurasi tambahan, ke semua alamat IP dari 127.0.0.0/8:

$ ping 127.254.0.100
PING 127.254.0.100 (127.254.0.100) 56(84) bytes of data.
64 bytes from 127.254.0.100: icmp_seq=1 ttl=64 time=0.026 ms

Jadi buat saja aplikasi Anda mendengarkan IP apa pun dari rentang 127.0.0.0/8 dan Anda akan baik-baik saja.

Contoh:

Satu konsol:

$ nc -vvl 127.0.34.2 9022
Connection from 127.0.0.1 port 9022 [tcp/*] accepted
Hello

Konsol lain:

$ echo Hello | nc -vv 127.0.34.1 9022
nc: connect to 127.0.34.1 port 9022 (tcp) failed: Connection refused
$ echo Hello | nc -vv 127.0.34.2 9022
Connection to 127.0.34.2 9022 port [tcp/*] succeeded!

Sebagai commenter sebuah mencatat, itu adalah diperlukan untuk menambahkan IP ke antarmuka localhost secara eksplisit pada MacOS / Darwin.


Sepertinya saya tidak dapat mendengarkan tanpa alias di antarmuka loopback. Mencoba nc -vvl 127.0.34.2 9022kembali nc: Can't assign requested address. Dengan alias yang ditentukan ifconfig lo0 alias 127.0.34.2, itu berfungsi. Adakah ide mengapa itu terjadi? Berjalan di OSX Yosemite.
djule5

1
Di Mac, hanya 127.0.0.1 yang dipetakan ke perangkat lo0 (loopback). Anda perlu menambahkan alias secara manual ke perangkat loopback untuk membuatnya berfungsi. Tetapi di Linux, semua 127.0.0. * Dipetakan ke perangkat loopback.
Sriram

1
Untuk Mac: sudo ifconfig lo0 alias 127.0.0.2 up (dan seterusnya, harus dilakukan secara individual untuk setiap alamat)
lilalinux
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.