Cấu hình virtual domain (tên miền ảo) trong XAMPP

Virtual Host - Virtual Domain là gì?

Virtual Host 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ủ. Có một khái niệm khác được đề cập tới trong Nginx cũng có chức năng tương tự như Virtual Hostđược gọi là Server Block. 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áp triển.

Cấu hình tên miền ảo trong XAMPP

Các bạn có thể tải XAMPP từ trang chủ: https://www.apachefriends.org .

Giả sử bạn cài đặt ở ổ D:\ ta có thư mục D:\xampp. Sau khi tiến hành cài đặt xong các bạn mở file D:/xampp/apache/conf/httpd.conf và tìm đến dòng:

# Virtual hosts
# Include conf/extra/httpd-vhosts.conf
Copy

nếu thấy có dấu # ở đầu dòng thì xóa bỏ dấu # đi như dưới đây, còn không thì thôi:

# Virtual hosts
Include conf/extra/httpd-vhosts.conf
Copy

mục đích là để load config từ một file khác vào trong file httpd.conf, mà cụ thể là D:/xampp/apache/conf/extra/httpd-vhosts.conf

Giờ các bạn mở tệp tin D:/xampp/apache/conf/extra/httpd-vhosts.conf copy đoạn code bên dưới và paste vào trong file httpd-vhosts.conf.

<VirtualHost *:80>
    ServerAdmin admin@chungnguyen.xyz
    DocumentRoot "D:/xampp/htdocs/laravel/public"
    ServerName  chungnguyen.local
    ErrorLog "logs/chungnguyen.local-error.log"
    CustomLog "logs/chungnguyen.local-access.log" common
    <Directory "D:/xampp/htdocs/laravel/public">
        Options FollowSymLinks
        AllowOverride All
        DirectoryIndex index.php
        Require all granted
    </Directory>
</VirtualHost>
Copy

Mình sẽ giải thích 1 chút như sau:

  • <VirtualHost *:80>: lắng nghe cổng 80 mặc định
  • ServerAdmin admin@chungnguyen.xyz : khi có lỗi xảy ra, sẽ hiện thông báo gửi email về cho quản trị
  • DocumentRoot "D:/xampp/htdocs/laravel/public": thư mục chứa code website
  • ServerName  chungnguyen.local : đây chính là tên miền ảo
  • ErrorLog "logs/chungnguyen.local-error.log" : error log
  • CustomLog "logs/chungnguyen.local-access.log" common : access log
  • <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 .
  • Options FollowSymLinks : Option này cho phép bạn truy cập theo symbolic link (giống như shortcut trong windows vậy). Ngoài ra còn có nhiều các options khác, các bạn có thể tham khảo thêm tại: http://httpd.apache.org/docs/2.4/en/mod/core.html#options .
  • AllowOverride All : cho phép bạn overwrite các config bằng file htaccess.
  • DirectoryIndex index.php : Khi các bạn truy cập vào thư mục (không chỉ rõ cụ thể là file nào) thì file index.php sẽ được gọi.
  • Require all granted : là cho phép tất cả các máy khác được truy cập vào thư mục đang được cấu hình. Chú ý: từ phiên bản 2.2 trở về trước thì Apache sử dụng Allow from all để thay thế cho Require all granted.

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 vào thư mục %windir%/system32/drivers/etc, trong máy của mình là C:\Windows\System32\drivers\etc copy file hosts ra desktop. Sau đó mở file hosts ở ngoài desktop bằng editor như: notedpad, notepad++, sublime text, ... thêm vào cuối file dòng sau:

127.0.0.1 chungnguyen.local
Copy

Lưu lại, và copy-paste ngược lại thư mục C:\Windows\System32\drivers\etc lúc nãy, chọn Yes nếu được hỏi quyền admin nhé.

Khi các bạn gõ địa chỉ chungnguyen.local  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://chungnguyen.local  chungnguyen.local cũng có thể là tuan.tv, doan-totnghiep.com(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.


Bình luận

Hỗ Trợ Trực Tuyến

congnguyentk

facebook skype

Điện thoại:0932556662

Thời gian làm việc

Bất cứ khi nào bạn cần, hỗ trợ 24/7, 7 ngày trong tuần