Cấu hình Virtual Host cho Nginx (CentOS – Ubuntu)

Trong bài viết trước, Zhost đã hướng dẫn các bạn cấu hình Virtual host cho Apache. Vậy để chạy nhiều website trên cùng Web server Nginx, hôm nay chúng tôi sẽ hướng dẫn bạn cấu hình Virtual host cho Nginx.

Các bước cấu hình Virtual host cho Nginx trên

Mô hình Lab

cau hinh virtual host nginx centos7 1

Trong bài lab này, Zhost sẽ sử dụng một Server Centos 7 có IP 10.10.10.11 cài đặt Nginx Web Server.

Trên server sẽ cấu hình chạy 2 web site là:

    • web1.com – đường dẫn: /var/www/web1
    • web2.com – đường dẫn: /var/www/web2

Vô hiệu hoá SELinux theo bài viết: Cách vô hiệu hóa SELinux trên CentOS

Cài đặt Nginx Web Server

Cài đặt Nginx các bạn có thể tham khảo bài viết: Cài đặt LEMP trên CentOS 7

cau hinh virtual host nginx centos7 2

Cấu hình Virtual Host cho Nginx

Tạo Folder chứa code cho 2 website web1 và web2 (với tuỳ chọn-p cho phép ta tạo ra những thư mục con lồng trong nó)

sudo mkdir -p /var/www/web1
sudo mkdir -p /var/www/web2

Chỉnh sửa quyền truy cập sao cho quyền đọc được chấp nhận với tất cả các file và thư mục bên trong /var/www

sudo chmod -R 755 /var/www

Tạo ra file index.html đơn giản cho 2 website để kiểm thử hoạt động của Virtual host.

touch /var/www/web1/index.html

touch /var/www/web2/index.html

echo "<center><h1>This is website web1.com - Nginx</h1></center>" > /var/www/web1/index.html

echo "<center><h1>This is website web2.com - Nginx</h1></center>" > /var/www/web2/index.html
Tạo file Virtual host cho web1:

sudo nano /etc/nginx/conf.d/web1.conf

Dán đoạn cấu hình sau vào:

server {
       listen 80;
       listen [::]:80;
       server_name web1.com;
       root /var/www/web1;
       index index.php index.html;
       access_log /var/www/web1/access.log;
       error_log /var/www/web1/error.log;
       location / {
           try_files $uri $uri/ =404;
       }
}

Lưu lại và thoát.

Trong đó:

    • 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 cho website
    • root: Đường đẫn thư mục chứa source code website
    • index: File sẽ gọi đến đầu tiên khi User vào website
    • access_log: Đường dẫn đến file log truy cập
    • error_log: Đường dẫn đến file log lỗi
    • location: Cách trả về tài nguyên trên máy chủ, khi có request tới 1 URL
Tạo file Virtual host cho web2:
sudo nano /etc/nginx/conf.d/web2.conf
Dán đoạn cấu hình sau vào:
server {
       listen 80;
       listen [::]:80;
       server_name web2.com;
       root /var/www/web2;
       index index.php index.html;
       access_log /var/www/web2/access.log;
       error_log /var/www/web2/error.log;
       location / {
           try_files $uri $uri/ =404;
       }
}
Lưu lại và thoát.

Khởi động lại Nginx:

sudo systemctl reload nginx

Như vậy ta đã cấu hình xong Virtual host cho 2 website.

Kiểm tra hoạt động

Trên trình duyệt web của User, bạn vào web1.com và web2.com để kiểm tra lần lượt,

Nếu ra nội dung như ta setup ban đầu thì đã thành công.

Truy cập web1.com

cau hinh virtual host nginx centos7 3

Truy cập web2.com

cau hinh virtual host nginx centos7 4

Lưu ý: Trong khuôn khổ bài lab này bạn sẽ cần phải trỏ ip trong file hosts của windows để có thể phân dải 2 tên miền web1.com và web2.com về ip của Web server.

Zhost chúc các bạn thành công!