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 ...
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: