Cara mengelola host virtual dinamis dengan Apache dan modul mod_vhost_alias

Cara mengelola host virtual dinamis dengan Apache dan modul mod_vhost_alias

Server Web Apache memiliki kemampuan untuk melayani banyak situs web dari alamat IP yang sama, menggunakan host virtual. Setiap host virtual dapat dikonfigurasi dalam file konfigurasi server utama, atau, berkat Termasuk atau Termasuk opsional
arahan, dengan sendirinya. Ketika jumlah host virtual meningkat, manajemen mereka mulai merepotkan. Jika konfigurasi mereka sangat mirip, kami dapat mengelolanya secara dinamis, berkat mod_vhost_alias modul. Dalam tutorial ini kita akan melihat bagaimana melakukannya.

Dalam tutorial ini Anda akan belajar:

  • Apa itu host virtual apache
  • Cara memeriksa apakah modul mod_vhost_alias diaktifkan
  • Cara memuat modul mod_vhost_alias pada keluarga distribusi Debian dan Red Hat
  • Cara mengelola host virtual dinamis menggunakan modul mod_vhost_alias

Persyaratan dan konvensi perangkat lunak yang digunakan

Persyaratan Perangkat Lunak dan Konvensi Baris Perintah Linux
Kategori Persyaratan, konvensi atau versi perangkat lunak yang digunakan
Sistem Distribusi Independen
Perangkat lunak Server Web Apache
Lainnya Izin root
Konvensi # - mensyaratkan Linux -Commands untuk dieksekusi dengan hak istimewa root baik secara langsung sebagai pengguna root atau dengan menggunakan sudo memerintah
$-mensyaratkan Linux-Commands untuk dieksekusi sebagai pengguna reguler yang tidak istimewa

Tinjauan Host Virtual Cepat

Seperti yang telah kami sebutkan dalam pendahuluan, server web Apache memiliki kemampuan untuk melayani banyak situs web menggunakan host virtual dan konfigurasi DNS yang tepat. Yang di bawah ini adalah definisi host virtual minimal namun khas:

 SERVERNAME www.tes.Uji Lan Serveralia.LAN Documentroot/var/www/www.tes.lan  


Konfigurasi ini akan mengelola permintaan pengguna ke www.tes.lan alamat, yang merupakan nilai yang kami tetapkan dengan Nama server arahan, tetapi juga untuk tes.lan, yang mana Serveralias. Dengan Root document Petunjuk Kami mengatur direktori dasar dari mana file yang terkait dengan host virtual harus dilayani, yang dalam hal ini /var/www/www.tes.lan.

Host virtual dapat didefinisikan dalam file konfigurasi server utama (/etc/httpd/conf/httpd.conf pada keluarga distribusi Red Hat, /etc/apache2/apache2.conf pada sistem Debian dan turunannya), atau dapat ditulis dalam file sendiri dan disertakan dari konfigurasi utama. Memang, jika kita melihat konfigurasi Apache pada distribusi Linux utama, kita dapat melihat bahwa file host virtual disertakan melalui Termasuk opsional Petunjuk dari beberapa direktori tertentu.

Pada fedora dan distribusi terkait, misalnya, kami menemukan konfigurasi berikut di akhir file:

# Muat file konfigurasi di "/etc/httpd/conf.D "direktori, jika ada. Termasuk conf.D/*.conf 

Di Debian, sebagai gantinya:

# Sertakan konfigurasi virtual host: sertakan situs-diable/*.conf 

Kita dapat melihat bahwa jalur dari mana file harus dimasukkan, relatif terhadap root server. Itu Termasuk opsional Petunjuk digunakan untuk memasukkan file host virtual yang harus dinamai dengan .conf akhiran. Di sini Termasuk Petunjuk juga dapat digunakan; Apa perbedaan antara keduanya? Keduanya bekerja persis dengan cara yang sama, Termasuk opsional Petunjuk, bagaimanapun, tidak menyebabkan kesalahan ketika wildcard digunakan (seperti dalam kasus ini) dan tidak ada kecocokan yang ditemukan, atau jika jalur tidak ada, secara umum.

Agar pengaturan ini berfungsi, entri DNS yang tepat juga harus dikonfigurasi. Namun, jika bekerja secara lokal, kami bisa menambahkan garis di /etc/host mengajukan. Misalnya:

127.0.0.1 www.tes.lan 

Saat konfigurasi host virtual mulai meningkat, manajemen mereka dapat dengan mudah menjadi merepotkan. Solusi yang mungkin untuk masalah ini adalah menggunakan host virtual yang dihasilkan secara dinamis. Mari kita lihat bagaimana melakukannya dengan mod_vhost_alias modul.

Memuat modul mod_vhost_alias

Hal pertama yang harus kami lakukan adalah memeriksa apakah mod_vhost_alias modul diaktifkan. Perintah yang ingin kami jalankan untuk tujuan ini tergantung pada distribusi yang kami gunakan. Pada Fedora dan distribusi keluarga Red Hat lainnya, kita dapat menggunakan yang berikut:

$ httpd -m | grep -i vhost_alias 

Di Debian, sebagai gantinya:

$ apachectl -m | grep -i vhost_alias 

Dengan melewati -M opsi ke httpd (atau Apachectl) Perintah, kami mendapatkan daftar modul statis dan bersama yang dimuat; menyalakan output ke grep kita dapat memeriksa apakah modul yang kita butuhkan ada di dalamnya. Jika modul tidak dimuat, pada Debian dan turunannya, kami dapat menjalankan perintah berikut:

$ sudo a2enmod vhost_alias && sudo systemctl restart apache2 


Itu A2Enmod perintah tidak membuat tautan simbolik ke /etc/apache2/mods-available/mod_vhost_alias.Jadi file ke /etc/apache2/mods-enabled direktori (mirip dengan apa a2ensite Perintah tidak untuk konfigurasi host virtual), di mana modul dimuat dari.

Pada Keluarga Distribusi Red Hat, daftar modul dasar yang dimuat ada di /etc/httpd/conf.modul.D/00-base.conf mengajukan. Setiap modul dimuat dengan LoadModule pengarahan. Jika karena alasan tertentu vhost_alias Baris modul (67) dikomentari, cukup hapus komentar, simpan modifikasi, dan muat ulang layanan httpd:

$ sudo systemctl restart httpd 

Setelah modul diaktifkan, kami dapat melanjutkan dengan konfigurasi yang sebenarnya.

Membuat host virtual dinamis

Pengaturan yang kami buat didasarkan pada fakta bahwa mod_vhost_alias Modul Menyimpan Komponen yang Dipisahkan Dot dari Nama Host Virtual yang Diminta Di Dalam Beberapa Variabel Kami Dapat Mengganti dan Menginterpolasi dalam String yang Kami Gunakan untuk Menentukan Root Dokumen Host Virtual. Jika kita mengambil www.tes.lan Virtual Host sebagai contoh, kami akan memiliki:

  • %0: Seluruh nama host virtual
  • %1: "www"
  • %2: "Tes"
  • %3: "LAN"

Angka negatif juga dapat digunakan, jadi, misalnya, kita akan memiliki:

  • %-1 Bagian terakhir dari nama, dalam hal ini "LAN"
  • %-2 Bagian kedua dari belakang, dalam hal ini "tes"

Bahkan mungkin untuk menentukan setiap komponen nama host virtual dari port tertentu ke depan atau ke belakang. Misalnya, %2+ berarti "dari bagian kedua dan seterusnya" dan %-2+ 'Menyebabkan komponen kedua dari belakang dan semua komponen yang mendahului itu dimasukkan.

Seandainya kita ingin menggunakan /var/www/ Direktori sebagai dasar dari semua host virtual kami, kami dapat membuat konfigurasi berikut dalam sebuah file, sebut saja Dynamic_vhost.conf:

 Usecanonicalname off virtualdocumentroot "/var/www/%-2"  

Mari kita jelaskan konfigurasi di atas. Pertama -tama kami menggunakan UsecanonicalName Petunjuk dan mengaturnya ke "off": kami melakukan ini untuk memastikan bahwa nama server diambil dari header "host:" dalam permintaan http. Kami daripada menggunakan VirtualDocumentroot pengarahan. Petunjuk ini diperlukan untuk mengatur jalur dinamis untuk root dokumen host virtual, dengan menggunakan variabel yang kami lihat di atas yang dievaluasi saat mengelola permintaan.

Ketika www.tes.lan host virtual diminta, secara otomatis file yang akan dilayani untuk itu akan dicari di dalam /var/www/tes direktori. Penggunaan %-2 Indeks negatif memiliki keuntungan bahwa pengaturan akan berfungsi keduanya www.tes.lan dan untuk tes.lan, karena bekerja mundur.

Ini jelas hanya contoh dari apa yang dapat dicapai dengan menggunakan mod_vhost_alias modul, dan Anda dapat membuat konfigurasi yang lebih cocok untuk Anda.



Kerugian

Pengaturan semacam ini cukup praktis jika semua host virtual yang kami kelola cukup mirip dan memerlukan pengaturan yang sama, tetapi memiliki kelemahannya, yang bisa sangat relevan tergantung pada situasinya. Pertama-tama, tidak mungkin untuk menentukan pengaturan khusus virtualhost, jika tidak dengan menggunakan .file htaccess); Pengaturan semacam ini juga akan menyebabkan masalah jika digunakan bersama dengan konfigurasi host virtual standar. Akhirnya, permintaan untuk semua host virtual akan dicatat dalam file yang sama.

Kesimpulan

Server Web Apache dapat melayani banyak situs web dan sumber daya dari satu mesin berkat penggunaan host virtual. Ketika jumlah host virtual mulai meningkat jumlahnya, itu bisa menjadi sulit untuk mengelolanya jika masing -masing memiliki file/bagian konfigurasi sendiri. Jika mereka memiliki pengaturan yang sama, kami dapat menjelaskan masalah ini dengan menggunakan host virtual yang dihasilkan secara dinamis, memanfaatkan mod_vhost_alias modul.

Pada artikel ini kami melihat cara memeriksa apakah modul ini diaktifkan dan cara mengaktifkannya dalam keluarga distribusi Debian dan Red Hat. Kami juga melihat bagaimana komponen nama host virtual disimpan dalam variabel, dan cara menggunakannya untuk membuat host virtual dinamis. Akhirnya, kami melihat apa kelemahan menggunakan pengaturan ini.

Tutorial Linux Terkait:

  • Cara memigrasikan Apache ke nginx dengan mengonversi virtualhosts ke ..
  • Firefox di Linux - Koneksi Anda tidak aman
  • Membandingkan Linux Apache Prefork vs Pekerja MPM
  • Hal -hal yang harus diinstal pada ubuntu 20.04
  • Hal -hal yang harus dilakukan setelah menginstal ubuntu 20.04 FOSSA FOSSA Linux
  • Cara menginstal ubuntu 20.04 di VirtualBox
  • Daftar Alat Linux Kali Terbaik untuk Pengujian Penetrasi dan ..
  • Apache IP dan host virtual berbasis nama dijelaskan
  • Pengantar Otomatisasi Linux, Alat dan Teknik
  • Mint 20: Lebih baik dari Ubuntu dan Microsoft Windows?