Bagaimana mengarahkan 2 domain berbeda ke 1 alamat IP (Apache)?

11

Saya memiliki dua nama domain yang berbeda, yang ingin saya host di hosting pribadi yang sama yang saya miliki. Saya ingin mereka menunjuk ke alamat IP yang sama namun memiliki konten yang berbeda (tentu saja). Bagaimana saya bisa melakukan itu? Apakah ada cara berbeda untuk melakukan ini? Dalam hal itu apa cara terbaik. Terima kasih.

Nima
sumber

Jawaban:

14

Apache2 mendukung penyajian konten yang berbeda tergantung pada nama domain, bahkan jika semua domain tersebut menyelesaikan ke alamat IP yang sama. Setiap nama domain ditangani oleh host virtual , dengan demikian nama host virtual berbasis nama .

Berikut ini contoh konfigurasi untuk dua domain:

NameVirtualHost *:80

<VirtualHost *:80>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/
</VirtualHost>

<VirtualHost *:80>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

Anda akan menemukan dokumentasi resmi tentang dukungan host virtual berbasis nama di sini .

Namun, harap dicatat ini hanya akan berfungsi dengan koneksi HTTP biasa, tidak dengan HTTPS (HTTP over SSL): host virtual berbasis nama bergantung pada mengetahui nama apa yang diminta, tetapi informasi ini tidak dapat diketahui oleh Apache hingga SSL terenkripsi koneksi dibuat.

Jika Anda perlu memiliki pengaturan Anda yang bekerja dengan HTTPS juga, Anda perlu mengandalkan ekstensi ke protokol SSL yang disebut Server Name Indication (SNI) ( RFC4366 ). Pada dasarnya, klien berkemampuan SNI (mis: browser web) menambahkan informasi teks tambahan saat membuat koneksi SSL terenkripsi, memungkinkan server untuk mengetahui nama yang diminta sebelum koneksi SSL siap.

Semua browser belum mendukung SNI. Pada saat penulisan dan menurut Wikipedia, ini adalah:

  • Internet Explorer 7 atau lebih baru, pada Windows Vista atau lebih tinggi (tidak berfungsi pada XP, bahkan IE 8)
  • Mozilla Firefox 2.0 atau lebih baru
  • Opera 8.0 atau yang lebih baru (protokol TLS 1.1 harus diaktifkan)
  • Opera Mobile setidaknya versi 10.1 beta di Android
  • Google Chrome (Vista atau lebih tinggi, XP di Chrome 6 atau lebih baru, OS X 10.5.7 atau lebih tinggi di Chrome 5.0.342.1 atau lebih baru)
  • Safari 2.1 atau yang lebih baru (Mac OS X 10.5.6 atau lebih tinggi dan Windows Vista atau lebih tinggi)
  • Konqueror / KDE 4.7 atau lebih baru
  • MobileSafari di Apple iOS 4.0 atau yang lebih baru
  • Browser default Android pada Honeycomb (v3.x) atau yang lebih baru
  • Windows Phone 7
  • MicroB di Maemo

Hosting beberapa host virtual berbasis nama yang dapat diakses melalui HTTPS mengharuskan Anda mengaktifkan mod_ssl dan menambahkan konfigurasi yang sama seperti pada contoh di atas:

Listen 443      
NameVirtualHost *:443

# Accept connections for these vhosts from non-SNI clients
# Clients without SNI will be handled by the first defined vhost.
# If you only want SNI-enabled client, put on instead
SSLStrictSNIVHostCheck off

<VirtualHost *:443>
  ServerName www.yourfirstdomain.tld
  DocumentRoot /www/yourfirstdomain.tld/    
</VirtualHost>

<VirtualHost *:443>
  ServerName www.yourseconddomain.tld
  DocumentRoot /www/yourseconddomain.tld/
</VirtualHost>

Ingat bahwa menggunakan SSL mengharuskan Anda untuk membeli sertifikat SSL untuk domain Anda - atau untuk membuat beberapa yang ditandatangani secara otomatis, dan untuk mengkonfigurasi Apache agar menggunakannya untuk koneksi SSL.

p_piotr3k
sumber
dapatkah Anda memberi tahu nama dan path file konfigurasi apache2?
João Pimentel Ferreira
jangan lupa untuk memulai kembali apache setelah perubahansudo service apache2 restart
João Pimentel Ferreira