Virtual Host (Vhost) là một cấu hình trong Apache để cho phép nhiều domain cùng chạy trên một máy chủ. Để dễ hình dung hơn khi các bạn chạy webapps ở môi trường phát triển sẽ có url localhost:1234. Giờ ta có thể làm url trở nên thân thiện hơn bằng các chuyển nó thành dạng giống domain: thaotrinh.dev:1234
Trong bài viết này mình chỉ muốn chia sẻ với các bạn còn lạ lẫm về Vhost cách để cấu hình một Virtual Host trong Windows, ở đây mình sử dụng XAMPP làm môi trường phát triển.
Các bạn có thể tải XAMPP từ trang chủ: https://www.apachefriends.org
Sau khi tiến hành cài đặt xong các bạn mở file httpd.conf tại đường dẫn <thu_muc_cai_dat_xampp>\apache\conf\httpd.conf
Mình cài xampp ở đây E:\xampp\apache\conf\httpd.conf
Tìm tới dòng
# Virtual hosts # Include conf/extra/httpd-vhosts.conf
Bỏ comment ở dòng Include đi. Nội dung sau khi bỏ comment
# Virtual hosts Include conf/extra/httpd-vhosts.conf
OK tới đây file httpd.conf sẽ nhúng thêm file httpd-vhosts.conf khi khởi chạy.
Tiếp theo mở file httpd-vhosts.conf lên (file nằm trong đường dẫn conf/extra/httpd-vhosts.conf)
Thêm đoạn code này vào
<VirtualHost *:8080> DocumentRoot "E:/www/wordpress/thaotrinh" ServerName thaotrinh.dev <Directory "E:/www/wordpress/thaotrinh"> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Giải thích thêm
<VirtualHost></VirtualHost> Đây là cặp thẻ báo hiệu mở đầu và kết thúc của một khai báo về Vhost. Có một lưu ý nhỏ là nếu bạn nào đổi port của Apache (8080,81,v.v…) thì cũng phải đổi số 80 theo port các bạn chuyển sang nhé. Ở đây mình đã đổi port của Apache thành 8080. Các bạn chỉnh sửa thành port tương ứng cấu hình của mình.
DocumentRoot Đây là từ khóa khai báo đường dẫn của thư mục sẽ được gọi khi người dùng truy cập vào domain được cấu hình. Đường dẫn này có thể nằm ở bất kỳ một phân vùng nào. Mình đặt website của mình theo đường dẫn E:/www/wordpress/thaotrinh
ServerName Chính là domain mà bạn muốn đặt (gõ thaotrinh.dev:8080 trên url là nó ra websites :D)
<Directory></Directory> Đây là cặp thẻ dùng để cấp quyền truy cập cho thư mục nếu thư mục không được cấp quyền sẽ gặp lỗi 403 khi các bạn cố gắng truy cập. Đường dẫn thư mục của bạn có thể là một regular expression. Nếu các bạn không rõ về Regex thì các bạn có thể dùng đường dẫn thư mục giống với khai báo trong DocumentRoot hoặc tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#directory
Các bạn khởi động lại Apache bằng cách là khởi động phần mềm XAMPP Control Panel dòng nếu dòng Apache đang running thì các bạn stop và start lại, còn nếu đang ở chế độ tắt rồi thì các bạn chỉ cần start là được.
Ok vậy là bạn đã cấu hình xong về phần của Apache giờ chỉ việc đăng ký DNS cho domain của bạn nữa là mọi việc hoàn tất.
Các bạn mở file C:\Windows\System32\drivers\etc\hosts bằng notepad hoặc bất kỳ trình editor nào. Thêm vào cuối file và lưu lại. Nếu bạn không lưu được file hosts thì nhớ tắt tình năng readonly và thử chạy lại bằng mode Administrator nhé.
127.0.0.1 thaotrinh.dev
Khi các bạn gõ địa chỉ thaotrinh.dev:8080 thì máy sẽ ưu tiên tìm địa chỉ IP của domain đó trong file hosts của hệ điều hành trước tiên.
Nếu không có thì nó sẽ đi tìm địa chỉ IP của domain này thông qua các DNS Server trên Internet. Vì bạn đã khai báo trong file hosts nên nó sẽ sử dụng địa chỉ IP được khai báo trong đó luôn. Ở đây địa chỉ IP 127.0.0.1 trỏ về chính máy đang truy cập (chính là máy của bạn – còn nếu cấu hình trên server thì đó chính là bản thân máy server luôn). Bạn có thể sử dụng dài IP từ 127.0.0.1 -> 127.255.225.254 đây là dải IP trỏ về máy của bạn (Nguyên dải luôn chứ không phải chỉ là 127.0.0.1 nhé).
Giờ các bạn mở trình duyệt và gõ vào thanh địa chỉ thay thế dòng localhost xấu xí bằng một domain của riêng bạn. http://thaotrinh.dev thaotrinh.dev cũng có thể là bangkieu.tv, hanoi.buffalow(chấm local. chấm canh, chấm mắm, hay chấm bất kì thứ gì bạn thích nhé, chỉ cần nhớ là đã khai báo trong ServerName và file host là được).
Tổng kết
Việc sử dụng Virtual Host có vài lợi ích sau.
- Bạn có thể truy cập vào bất kỳ thư mục code nào mà không cần phải copy vào htdocs trong XAMPP.
- Nếu bạn dùng folder code ở một phân vùng khác thì bạn không cần phải lo lắng backup lại folder code mỗi lần cài lại windows.
- Nhìn có vẻ nguy hiểm hơn :v
Các bạn cũng có thể cấu hình Vhost với WAMP, APPServer, USBServer các cấu hình cũng không khác nhiều lắm. Vì tất cả các phần mềm này đều dùng Apache, Mysql và PHP. Vhost là một tình năng của Apache chứ không phải của XAMPP nên phần mềm nào dùng Apache thì đều có thể cấu hình Vhost theo cách tương tự, điểm khác biệt chỉ là khác về nơi đặt file httpd.conf. Chúc các bạn thành công.