Fix Lỗi Virtual Host Không Hoạt Động Trên Apache
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.
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: