Bagaimana cara meng-host beberapa server Web fisik di belakang satu alamat IP?

14

Saya menjalankan beberapa server web di rumah saya, yang masing-masing terhubung ke router saya.

Server A Server B Server C

Saat ini saya hanya dapat menggunakan satu server karena IP saya (xx.xxx.xx.xx) port 80 mengarah ke server A. Namun beberapa domain menunjuk ke server A, beberapa ke B, dll.

Dengan satu alamat IP saya, bagaimana cara saya menunjuk ke setiap server? Misalnya A (host) saya mencatat semua menunjuk hanya alamat IP saya.

Maaf jika saya terdengar membingungkan. Beri tahu saya jika saya tidak jelas.

Setiap server menjalankan Ubuntu Server 12.04.02 dan menggunakan Apache (jika itu membantu). Router saya juga Netgear dan ISP saya adalah Time Warner Cable.

Stephen Cioffi
sumber
kemungkinan duplikat dari beberapa server web di belakang firewall tunggal
kobaltz
@ kobaltz Tidak persis karena ini adalah server yang berbeda, bukan host virtual. Ini adalah 3 server fisik
Stephen Cioffi
Jawaban saya dalam pertanyaan masih sama di mana Anda akan memiliki server proxy terbalik yang akan menjadi hit pertama setelah router. Dari sana, itu akan mendorong data ke salah satu dari tiga server. Anda bahkan dapat melakukan ini dari dalam router jika Anda menggunakan sesuatu seperti OpenWRT.
kobaltz
Saat ini saya menggunakan penjelasan dalam jawaban saya untuk pertanyaan lain. Saya memiliki server Mesin Virtual yang memiliki VM untuk gateway, dan kemudian 20 node. Bergantung pada subdomain dan nama domain, itu mendorong data ke salah satu dari 20 server.
kobaltz

Jawaban:

9

Situs web akan dikenali melalui Host:tajuk yang dikirim dari browser. Tetapi karena router Anda tidak mampu melakukan HTTP demangling yang digunakan oleh hosting virtual, Anda harus memilih satu server sebagai "titik akhir" (dan beri tahu router Anda bahwa alamatnya adalah Virtual Server / DMZ).

Kemudian, Anda mengkonfigurasi salah satu mesin sebagai server web untuk domainnya dan proksi untuk yang lain (mis. Menggunakan Apache reverse proxy ), atau (mungkin lebih baik) Anda menginstal proxy pada satu mesin itu, dan menggunakannya untuk mengalikan permintaan ke server lain . Beberapa domain bahkan mungkin di-host di mesin yang sama. nginxcocok untuk jenis pekerjaan ini, tetapi Anda juga dapat menggunakan perangkat lunak lain (misalnya pound).

Saya pikir solusi kedua lebih baik karena Anda tidak perlu mengutak-atik konfigurasi server web sama sekali: satu proxy melakukan proxy dan beberapa server web melakukan penyajian web. Jika Anda perlu menambahkan server atau memindahkan host virtual, arsitektur ini lebih mudah dipelihara.

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

Latensi yang ditambahkan karena permintaan didekodekan dua kali (sekali oleh proxy, sekali oleh penerima yang dituju) dapat diabaikan, dan lebih dari diimbangi oleh akselerasi yang disediakan oleh proxy itu sendiri.

LSerni
sumber
Jika saya membuat tamu VM sebagai proxy, OS apa yang terbaik untuk digunakan dan sumber daya perangkat keras apa yang harus saya alokasikan? Anda menyebutkan pengaturan proxy ini pada DMZ ... apakah ini perlu? Tidak bisakah saya memajukan hanya port yang ingin saya buka sehingga masih ada beberapa lapisan perlindungan melalui firewall router dan NAT?
Reece
Sumber daya untuk proxy bukan masalah, itu akan sangat terikat jaringan. Sedangkan untuk OS, saya akan mengatakan Unix pasti, Linux atau BSD tergantung pada apa yang Anda paling nyaman. Ada juga peralatan siap pakai untuk beberapa solusi virtualisasi (vmware, virtualbox, xen, dll.). Dan ya, Anda pasti dapat melakukan port forward hanya port yang Anda butuhkan.
LSerni