Để có thể chạy nhiều domain / website trên Nginx Web Server chúng ta cần cấu hình Virtual Hosts. Hướng dẫn sau sẽ giúp bạn cấu hình Nginx Virtual Hosts trên máy chủ Ubuntu / CentOS
Tiền đề bài viết
Máy chủ server / vps chạy hệ điều hành Ubuntu Server 18.04 (Ubuntu / Debian / Linux Mint) hoặc CentOS 7/8 (RHEL / Fedora). Các bạn có thể thực hiện trên Local với VirtualBox hoặc VMWare hoặc mua và sử dụng 1 VPS, Cloud VPS. Các bạn có thể tham khảo dịch vụ Cloud VPS nổi tiếng của nhà cung cấp Vultr.
Chúng ta cấu hình Virtual Hosts trên Nginx với 2 website có thông tin như sau:
Website 1 | Website 2 | |
Tên miền | vinasupport-1.com | vinasupport-2.com |
Đường dẫn thư mục | /var/www/vinasupport_1 | /var/www/vinasupport_2 |
Cài đặt Nginx Server
Việc cài đặt Nginx cực kỳ đơn giản và mình cũng đã trình bày chi tiết trong bài viết: Nginx là gì? Cài đặt và cấu hình Nginx Web Server
Cấu hình Virtual Hosts trên Nginx Server
Tạo thư mục lưu trữ source code cho 2 website:
mkdir -p /var/www/vinasupport_{1,2}
Tạo file index.html cho website vinasupport-1.com, đặt nó ở đường dẫn /var/www/vinasupport_1/index.html
Với nội dung như sau:
<html> <head> <title>vinasupport.com</title> </head> <body> <p>Website: vinasupport-1.com</p> </body> </html>
Tương tư tạo file index.html cho website vinasupport-2.com ở đường dẫn /var/www/vinasupport_2/index.html
Với nội dung như sau:
<html> <head> <title>vinasupport.com</title> </head> <body> <p>Website: vinasupport-2.com</p> </body> </html>
Tạo 2 file Virtual Hosts cho 2 domain:
– File: /etc/nginx/sites-available/vinasupport-1.conf có nội dung như sau:
server { listen 80; listen [::]:80; server_name vinasupport-1.com; root /var/www/vinasupport_1; index index.html; location / { try_files $uri $uri/ =404; } }
– File: /etc/nginx/sites-available/vinasupport-2.conf có nội dung như sau:
server { listen 80; listen [::]:80; server_name vinasupport-2.com; root /var/www/vinasupport_2; index index.html; location / { try_files $uri $uri/ =404; } }
Ý nghĩa của các tham số:
- listen 80: Lắng nghe và nhận các kết nối trên cổng 80 (HTTP Port)
- listen [::]:80: Tương tự nhưng cho địa chỉ IPv6
- server_name: Địa chỉ tên miền
- root: Đường đẫn thư mục chứa source code website
- index: File sẽ gọi đến đầu tiên
- location: Cách trả về tài nguyên trên máy chủ, khi có request tới 1 URL
Sau đó tạo 2 file symbolic link tới thư mục /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/vinasupport-1.conf /etc/nginx/sites-enabled/vinasupport-1.conf sudo ln -s /etc/nginx/sites-available/vinasupport-2.conf /etc/nginx/sites-enabled/vinasupport-2.conf
Cuối cùng reload lại service của Nginx Web Server để nhận 2 file configs này!
sudo systemctl reload nginx
Kết quả:
Nguồn: vinasupport.com