Fix Lỗi Virtual Host Không Hoạt Động Trên Apache

Trung Quân

Apache là phần mềm HTTP web server mã nguồn mở được sử dụng phổ biến hiện nay. Theo thống kê hiện nay thì Apache được sử dụng bởi 67% trên các máy chủ web server (phần cứng) trên toàn thế giới.

Fix Lỗi Virtual Host Không Hoạt Động Trên Apache

Một trong những tính năng mà Apache cung cấp đó là cho phép chúng ta cấu hình virtual host để cùng một máy chủ web server (phần cứng) có thể được sử dụng chong bởi nhiều tên miền khác nhau. Trong bài viết này chúng ta sẽ tìm hiểu cách khắc phục hiện tượng Virtual Host không hoạt động.

Thiếu Chỉ Thị DocumentRoot và/hoặc Directory

Để Virtual Host hoạt động thì bạn nên sử dụng kết hợp cả hai chỉ thị này như sau:

<VirtualHost *:80>
    ServerAdmin admin@example.dev
    ServerName example.dev
    ServerAlias www.example.dev

    DocumentRoot /var/www/html/my_site/

    <Directory /var/www/html/my_site/>
            Options FollowSymLinks
            AllowOverride All
            Order allow,deny
            Allow from all
    </Directory>
</VirtualHost>

Chỉ thị <DocumentRoot> dùng để quy định thư mục gốc của chứa các tập tin và thư mục của website trong khi đó chỉ thị <Directory> thường dùng để quy định bổ sung thêm các thông tin khác như cho phép sử dụng .htaccess để viết lại URL, quyền truy cập thư mục...

Thiếu Chỉ Thị NameVirtualHost

Với phiên bản Apache 2.2 thì để virtual host có thể hoạt động được thì chỉ thị NameVirtualHost cần được thêm vào. NameVirtualHost quy định các virtual host được phép sử dụng đi kèm với port sử dụng bởi Apache (thông thường là 80). Tập tin cài đặt chỉ thị này mặc định có tên là httpd-vhosts.conf và trong thư mục extra nằm bên trong thư mục cài đặt Apache.

Trên máy tôi tập tin này nằm ở địa chỉ /usr/local/etc/apache2/2.4/extra/httpd-vhosts.conf và có nội dung như sau:

NameVirtualHost *:80

Bạn có thể sử dụng địa chỉ IP của server hoặc tên domain cho chỉ thị này và có thể bỏ giá trị củ port nếu như port đang được Apache sử dụng là 80, ví dụ như sau:

NameVirtualHost 111.22.33.44

Tuy nhiên nếu bạn sử dụng ở môi trường máy local bạn có thể sử dụng wildcard * để cho phép sử dụng nhiều virtual host:

Thêm Phản Hồi

Bài Viết Liên Quan