algolia search

Tìm thấy x bài viết trong xms.

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

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

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 Indexes
        AllowOverride All
        DirectoryIndex index.php
        Require all granted
        Allow from all
    </Directory>
</VirtualHost>

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

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

Lưu ý

Nếu dùng trình duyệt Google Chrome bạn sẽ không dùng được tên miền .dev nha.

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.

Đánh giá bài viết

Thích thì like
Cấu hình virtual domain (tên miền ảo) trong XAMPP
5/5 2 votes

Bình luận

‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬ avatar
‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬‬
Cho em hỏi với, em làm giống a nhưng nó báo lỗi server IP address could not be found là sao ạ 
Linh Nhi Nguyễn avatar
Linh Nhi Nguyễn
Cho em hỏi vs ạ. Em làm y hệt như anh rồi nhưng khi gõ tên miền vào nó cứ bị nhảy vào gg search là sao ạ?
Chung Nguyễn avatar
Chung Nguyễn
ví dụ tên miền là: chungnguyen.local thì em phải gõ chungnguyen.local/
Những domain không có thực chrome sẽ k hiểu và tưởng đó là một keyword tìm kiếm
Hoàng Nam avatar
Hoàng Nam
Mình đã bỏ rồi sao nó vẫn bị lỗi đó nhỉ
Hoàng Nam avatar
Hoàng Nam
bạn giúp mình xem mình đã cấu hình như hai ảnh bên dưới đã đúng chưa nhỉ.
https://www.upsieutoc.com/image/kNR5Vh
https://www.upsieutoc.com/image/kNRHpk

Chung Nguyễn avatar
Chung Nguyễn
cấu hình vậy là đúng rồi, apache stop rồi start lại nó mới cập nhật cấu hình.

Đã bỏ comment dòng dưới chưa bạn?
# Virtual hosts
# Include conf/extra/httpd-vhosts.conf
Hoàng Nam avatar
Hoàng Nam
Mình đã làm theo hướng dẫn của bạn và mình gặp lỗi khi gõ localhost thì nó lại trỏ về domain ảo, ngược lại khi gõ domain ảo thì nó lại trỏ về localhost. Mong bạn giúp mình trường hợp này
Chung Nguyễn avatar
Chung Nguyễn
Bạn kiểm tra lại cấu hình VirtualHost giữa DocumentRoot và ServerName có khớp nhau không nhé?
Đỗ Quốc Tiệp avatar
Đỗ Quốc Tiệp

Cảm ơn bạn, bài viết rất hay, mình đang sử dụng XAMPP làm website chạy trên internet tốt, mình muốn chạy nhiều tên miền cùng lúc bạn biết cấu hình hướng dẫn mình với, mình đang sử dụng IP tĩnh từ nhà mạng, mình muốn sử dụng nhiều tên miền cùng lúc, ví dụ mình vào abc.com thì nó tự động trỏ vào thư mục có website 1, vào tên miền abcd vào thư mục có website 2

Chung Nguyễn avatar
Chung Nguyễn

Ở ví dụ ở trên, bạn copy thành nhiều bản. Chỉ cần thay ServerName thành địa chỉ website và DocumentRoot tương ứng với thư mục chứa ưebsite là ok bạn nhé.

Hiển thị bình luận Facebook