Vhost là gì ? và cách tạo.

skins

New member
Tham gia
6 Tháng bảy 2024
Bài viết
19
Reaction score
0

I. Tìm Hiểu​

Cấu hình Virtual Host cho Apache là quá trình thiết lập các cấu hình khác nhau trên một máy chủ Apache để quản lý nhiều tên miền hoặc trang web trên cùng một máy chủ vật lý. Virtual Host (Vhost) cho phép bạn sử dụng một máy chủ Apache để phục vụ nhiều trang web hoặc ứng dụng web khác nhau bằng cách ánh xạ các tên miền hoặc địa chỉ IP tới các thư mục gốc khác nhau trên hệ thống tệp của máy chủ.

Có hai loại Virtual Host chính trong Apache:
  1. Name-based Virtual Host: Dựa trên tên miền để phân biệt các trang web. Điều này cho phép bạn sử dụng cùng một địa chỉ IP để phục vụ nhiều trang web khác nhau.
  2. IP-based Virtual Host: Dựa trên địa chỉ IP để phân biệt các trang web. Mỗi trang web sẽ có một địa chỉ IP riêng.

II. Cấu hình Virtual Host cho Apache​

1 . IP-based Virtual Host

Phần HTTP (<VirtualHost *:80>)​

Bash:
<VirtualHost *:80>
   ServerName kienthuclinux.info
   ServerAdmin webmaster@kienthuclinux.info
   DocumentRoot /var/www/html/kienthuclinux.info

<Directory /var/www/html/kienthuclinux.info>
     AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
  1. <VirtualHost *:80>:
    • Chỉ định rằng cấu hình này áp dụng cho tất cả các yêu cầu HTTP trên cổng 80.
    • * có nghĩa là nó sẽ lắng nghe trên tất cả các địa chỉ IP mà máy chủ có.
  2. ServerName kienthuclinux.info:
    • Định nghĩa tên miền chính cho VirtualHost này.
    • Apache sẽ sử dụng tên miền này để xác định cấu hình nào sẽ được áp dụng cho yêu cầu đến.
  3. ServerAdmin webmaster@kienthuclinux.info:
    • Địa chỉ email của quản trị viên máy chủ.
    • Nếu có lỗi máy chủ, địa chỉ email này có thể được hiển thị cho người dùng để họ có thể liên hệ với quản trị viên.
  4. DocumentRoot /var/www/html/kienthuclinux.info:
    • Đường dẫn tới thư mục gốc của website.
    • Apache sẽ phục vụ các tệp từ thư mục này khi có yêu cầu tới kienthuclinux.info.
  5. <Directory /var/www/html/kienthuclinux.info>:
    • Bắt đầu một khối cấu hình cho thư mục cụ thể.
  6. AllowOverride All:
    • Cho phép ghi đè các thiết lập cấu hình của Apache bằng các tệp .htaccess nằm trong thư mục /var/www/html/kienthuclinux.info.
    • Tùy chọn này rất quan trọng cho phép các quy tắc cấu hình và bảo mật bổ sung trong .htaccess.
  7. ErrorLog ${APACHE_LOG_DIR}/error.log:
    • Đường dẫn tới tệp log ghi lại các lỗi của Apache.
    • ${APACHE_LOG_DIR} là một biến môi trường chứa đường dẫn tới thư mục log của Apache, thường là /var/log/apache2.
  8. CustomLog ${APACHE_LOG_DIR}/access.log combined:
    • Đường dẫn tới tệp log ghi lại các yêu cầu truy cập tới website.
    • combined là định dạng log bao gồm thông tin chi tiết về mỗi yêu cầu.

Phần HTTPS (<VirtualHost *:443>)​


Bash:
<VirtualHost *:443>
   ServerName kienthuclinux.info
   ServerAdmin webmaster@kienthuclinux.info
   DocumentRoot /var/www/html/kienthuclinux.info
   SSLEngine on
   SSLCertificateFile /etc/apache2/ssl/kienthuclinux.info/certificate.crt
   SSLCertificateKeyFile /etc/apache2/ssl/kienthuclinux.info/private.key
   SSLCertificateChainFile /etc/apache2/ssl/kienthuclinux.info/ca_bundle.crt

<Directory /var/www/html/kienthuclinux.info>
     AllowOverride All
</Directory>
</VirtualHost>
  1. <VirtualHost *:443>:
    • Chỉ định rằng cấu hình này áp dụng cho tất cả các yêu cầu HTTPS trên cổng 443.
  2. ServerName domain.com:
    • Định nghĩa tên miền chính cho VirtualHost này.
    • Apache sẽ sử dụng tên miền này để xác định cấu hình nào sẽ được áp dụng cho yêu cầu đến.
  3. ServerAdmin webmaster@domain.com:
    • Địa chỉ email của quản trị viên máy chủ.
    • Nếu có lỗi máy chủ, địa chỉ email này có thể được hiển thị cho người dùng để họ có thể liên hệ với quản trị viên.
  4. DocumentRoot /var/www/html/domain.com:
    • Đường dẫn tới thư mục gốc của website.
    • Apache sẽ phục vụ các tệp từ thư mục này khi có yêu cầu tới domain.com.
  5. SSLEngine on:
    • Bật chế độ SSL cho VirtualHost này để xử lý các kết nối HTTPS.
  6. SSLCertificateFile /etc/apache2/ssl/domain.com/certificate.crt:
    • Đường dẫn tới tệp chứng chỉ SSL của bạn.
    • Đây là tệp chứa chứng chỉ được cấp bởi cơ quan cấp chứng chỉ (CA).
  7. SSLCertificateKeyFile /etc/apache2/ssl/domain.com/private.key:
    • Đường dẫn tới tệp khóa riêng của chứng chỉ SSL.
    • Đây là tệp bảo mật và không nên chia sẻ công khai.
  8. SSLCertificateChainFile /etc/apache2/ssl/domain.com/ca_bundle.crt:
    • Đường dẫn tới tệp chuỗi chứng chỉ (certificate chain).
    • Tệp này chứa chuỗi các chứng chỉ của CA dẫn đến chứng chỉ gốc.
  9. <Directory /var/www/html/domain.com>:
    • Bắt đầu một khối cấu hình cho thư mục cụ thể.
  10. AllowOverride All:
    • Cho phép ghi đè các thiết lập cấu hình của Apache bằng các tệp .htaccess nằm trong thư mục /var/www/html/domain.com.

2. IP-based Virtual Host

Virtual Host trong Apache, bạn có thể thay đổi phần <VirtualHost *:80> hoặc <VirtualHost *:443> thành <VirtualHost 192.168.1.100:80> hoặc <VirtualHost 192.168.1.100:443>, trong đó 192.168.1.100 là địa chỉ IP mà bạn muốn sử dụng.

Ví dụ về cấu hình Virtual Host chỉ định địa chỉ IP cụ thể:

Cấu hình HTTP Configuration không có ssl

Bash:
<VirtualHost 192.168.1.100:80>
    ServerName kienthuclinux.info
    ServerAlias www.kienthuclinux.info
    DocumentRoot /var/www/kienthuclinux.info/public_html
    ErrorLog ${APACHE_LOG_DIR}/kienthuclinux.info_error.log
    CustomLog ${APACHE_LOG_DIR}/kienthuclinux.info_access.log combined

    <Directory /var/www/kienthuclinux.info/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Cấu hình có ssl
Bash:
<VirtualHost 192.168.1.100:443>
    ServerName kienthuclinux.info
    ServerAlias www.kienthuclinux.info
    DocumentRoot /var/www/kienthuclinux.info/public_html
    SSLEngine on
    SSLCertificateFile /etc/ssl/certs/kienthuclinux.info.crt
    SSLCertificateKeyFile /etc/ssl/private/kienthuclinux.info.key
    SSLCertificateChainFile /etc/ssl/certs/kienthuclinux.info.chain.pem
    ErrorLog ${APACHE_LOG_DIR}/kienthuclinux.info_ssl_error.log
    CustomLog ${APACHE_LOG_DIR}/kienthuclinux.info_ssl_access.log combined

    <Directory /var/www/kienthuclinux.info/public_html>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>

Giải thích thêm.
  1. <VirtualHost 192.168.1.100:80><VirtualHost 192.168.1.100:443>:
    • Chỉ định rằng Virtual Host này sẽ chỉ lắng nghe trên địa chỉ IP cụ thể 192.168.1.100 và cổng 80 hoặc 443.
    • Điều này giúp bạn quản lý các yêu cầu đến từ địa chỉ IP này cụ thể hơn.
  2. Các thành phần còn lại giống như trong ví dụ trước:
    • ServerName, ServerAlias, DocumentRoot, ErrorLog, CustomLog, và khối <Directory> đều được giữ nguyên.
    • Các thiết lập SSL trong phần HTTPS cũng không thay đổi.
Việc chỉ định một địa chỉ IP cụ thể cho Virtual Host trong Apache giúp bạn kiểm soát chính xác hơn việc quản lý các yêu cầu tới các tên miền khác nhau trên cùng một máy chủ, đặc biệt hữu ích khi bạn có nhiều địa chỉ IP trên cùng một máy chủ vật lý.

Tổng kết​

Cấu hình VirtualHost này giúp Apache phục vụ các yêu cầu HTTP và HTTPS cho cùng một website. Nó đảm bảo rằng website của bạn có thể được truy cập qua cả hai giao thức, và cung cấp bảo mật qua HTTPS với SSL. Cấu hình cũng bao gồm các thiết lập log để ghi lại các lỗi và truy cập, cũng như cho phép các tệp .htaccess để thêm các quy tắc cấu hình bổ sung nếu cần.
 
Sửa lần cuối:
Top Bottom