Virtual Host là một cách cấu hình Apache cho phép bạn chạy nhiều hơn một trang web trên một máy chủ. Với Virtual Host, bạn có thể chỉ định root document trang web (thư mục chứa tệp trang web), tạo chính sách bảo mật riêng cho từng trang và sử dụng các chứng chỉ SSL khác nhau.

Bài viết sau mình sẽ hướng dẫn cơ bản cách tạo Apache Virtual Hosts trên Ubuntu Server 20.04

Chuẩn bị

  • Một hoặc nhiều tên miền trỏ đến IP public máy chủ của bạn.
  • Apache được cài đặt trên hệ thống Ubuntu của bạn .
  • Bạn đã đăng nhập với quyền root hoặc người dùng với quyền sudo .

Tạo các thư mục sau

Thư mục gốc là thư mục nơi các tệp trang web cho một tên miền được lưu trữ và phục vụ theo yêu cầu. 

/var/www/
├── domainA.com
│   └── public_html
├── domainB.com
│   └── public_html
Mỗi tên miền được lưu trữ trên máy chủ sẽ được đặt /var/www/<domain_name>/public_html.
Bắt đầu bằng cách tạo thư mục gốc cho tên miền:
mkdir -p /var/www/domainA.com/public_html
mkdir -p /var/www/domainB.com/public_html
Chúng ta cũng sẽ tạo một file index.html  đối với tên miền domainA.com bên trong thư mục gốc của document  /var/www/domainA.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to domainA.com</title>
</head>
<body>
<h1>Success! domainA.com home page!</h1>
</body>
</html>
Tương tự với tên miền domainB.com trong /var/www/domainB.com/public_html/index.html
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to domainA.com</title>
</head>
<body>
<h1>Success! domainB.com home page!</h1>
</body>
</html>
Cấp quyền sở hữu tất cả các tệp trong thư mục thành người dùng apache ( www-data):
chown -R www-data: /var/www/domainA.com
chown -R www-data: /var/www/domainB.com

Tạo một Virtual Host

Trên hệ thống Ubuntu, các tệp cấu hình Virtual Host Apache được đặt trong thư mục /etc/apache2/sites-available . Chúng có thể được kích hoạt bằng cách tạo các liên kết tượng trưng đến thư mục /etc/apache2/sites-enabled mà Apache đọc trong quá trình khởi động.
Tạo tệp cấu hình Virtual Host sau: /etc/apache2/sites-available/domainA.com
<VirtualHost *:80>
ServerName domainA.com
ServerAlias www.domainA.com
ServerAdmin webmaster@domainA.com
DocumentRoot /var/www/domainA.com/public_html
<Directory /var/www/domainA.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/domainA.com-error.log
CustomLog ${APACHE_LOG_DIR}/domainA.com-access.log combined
</VirtualHost>
  • ServerName: Tên miền phù hợp với cấu hình máy chủ ảo này. Đây phải là tên miền của bạn.
  • ServerAlias: Tất cả các tên miền hoặc tên miền phụ khác phù hợp với máy chủ ảo này, chẳng hạn như tên miền phụ www.
  • DocumentRoot: Thư mục mà Apache sẽ phục vụ các tệp miền.
  • Options: Lệnh này kiểm soát các tính năng máy chủ có sẵn trong một thư mục cụ thể.
  • Indexes: Ngăn chặn danh sách thư mục.
  • FollowSymLinks: Khi tùy chọn này được bật, Apache sẽ theo các liên kết tượng trưng.
  • AllowOverride: Chỉ định config nào được khai báo trong file .htaccess có thể ghi đè các config cũ.
  • ErrorLog, CustomLog: Chỉ định vị trí cho tệp logs.
Tương tự với /etc/apache2/sites-available/domainB.com
<VirtualHost *:80>
ServerName domainB.com
ServerAlias www.domainB.com
ServerAdmin webmaster@domainB.com
DocumentRoot /var/www/domainB.com/public_html
<Directory /var/www/domainB.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/domainB.com-error.log
CustomLog ${APACHE_LOG_DIR}/domainB.com-access.log combined
</VirtualHost>
Bạn có thể đặt tên tệp cấu hình theo ý muốn, nhưng cách tốt nhất là sử dụng tên miền làm tên của tệp cấu hình Virtual Host.
Để bật tệp Virtual Host mới, hãy sử dụng lệnh a2ensite trợ giúp tạo liên kết tượng trưng từ tệp máy chủ ảo đến thư mục sites-enabled:
a2ensite domainA.com
Tùy chọn khác là tự tạo một liên kết tượng trưng như bên dưới:
ln -s /etc/apache2/sites-available/domainA.com.conf /etc/apache2/sites-enabled/
ln -s /etc/apache2/sites-available/domainB.com.conf /etc/apache2/sites-enabled/

Sau khi hoàn tất, hãy kiểm tra cấu hình để đảm bảo không có bất kỳ lỗi cú pháp:

apachectl configtest
Nếu không có lỗi, bạn sẽ thấy đầu ra sau:
Syntax OK
Khởi động lại dịch vụ Apache để các thay đổi có hiệu lực:
systemctl restart apache2
Mở trình duyệt nhập http://domainA.com, http://domainB.com trong trình duyệt của bạn và bạn sẽ thấy nội dung của trang index.html:

Lời kết

Như vậy qua bài viết này bạn đã biết được cách tạo cấu hình máy chủ ảo apache để lưu trữ nhiều tên miền trên một máy chủ Ubuntu.
Chúc các bạn thành công!
Bài viết liên quan

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *