CHIA SẺ:

Thông thường mỗi VPS mình chỉ chạy cho một website mà thôi, tuy nhiên trong trường hợp bạn có nhiều website và muốn add thêm chạy trên VPS thì sao, hãy tham khảo bài hướng dẫn này để thực hiện.

Giới thiệu Virtual Hosts

Virtual Hosts được sử dụng để giúp cho một VPS có thể chạy được nhiều website khác nhau.

Theo như nginx website, Virtual Hosts được gọi là Server Blocks trên nginx, tuy nhiên cho dễ dàng giống như Apache nên mình sẽ gọi là Virtual Hosts trong bài này. Các bước add thêm website trên VPS nginx chạy CentOS bằng Virtual Hosts như sau:

Chuẩn bị server

Đã cài đặt sẵn webserver nginx trên CentOS, có thể tham khảo bài viết cài đặt LEMP trên CentOS

Tạo thư mục chứa website

Ví dụ mình sẽ tạo thư mục ở folder /var/www nhé

sudo mkdir -p /var/www/example.com/public_html

Chú ý thay example.com bằng domain của bạn.

Gán quyền

Đảm bảo cho website hoạt động bình thường

sudo chown -R nginx:nginx /var/www/example.com/public_html

Ngoài ra chmod 755 để đảm bảo mọi người có thể xem được website của bạn

sudo chmod 755 /var/www

Cài đặt Virtual Hosts

Mình sẽ chỉnh sửa file cấu hình mặc định của nginx

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

Thêm đoạn sau vào cuối file:

#
# example.com configuration
#
server {
    listen       80;
    server_name example.com;

    location / {
        root   /var/www/example.com/public_html;
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /var/www/example.com/public_html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/example.com/public_html;
    }

    # pass the PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        root           /var/www/example.com/public_html;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

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

Restart nginx

sudo service nginx restart

Test thử domain

Giờ mình sẽ tạo thử file index.html để test thử domain example.com có hoạt động đúng không nhé.

sudo nano /var/www/example.com/public_html/index.html

Thêm đoạn code html vào file

<html>
  <head>
    <title>www.example.com</title>
  </head>
  <body>
    <h1>Success: You Have Set Up a Virtual Host</h1>
  </body>
</html>

Lưu và thoát.

Bây giờ bạn hãy test thử với link http://example.com, nếu kết quả hiện ra như bên dưới là thành công.

test thu example.com

Cài đặt thêm Virtual Hosts

Để add thêm nhiều website nữa, bạn có thể lặp đi lặp lại bước. Cấu trúc file nginx config lúc nãy sẽ tương tự như sau:

#
# example.com configuration
#
server {
    listen       80;
    server_name example.com;

    location / {
        root   /var/www/example.com/public_html;
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /var/www/example.com/public_html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/example.com/public_html;
    }

    # pass the PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        root           /var/www/example.com/public_html;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

#
# example.net configuration
#
server {
    listen       80;
    server_name example.net;

    location / {
        root   /var/www/example.net/public_html;
        index index.php  index.html index.htm;
        try_files $uri $uri/ /index.php?q=$uri&$args;
    }

    error_page  404              /404.html;
    location = /404.html {
        root   /var/www/example.net/public_html;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/example.net/public_html;
    }

    # pass the PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        root           /var/www/example.net/public_html;
        fastcgi_pass   unix:/tmp/php5-fpm.sock;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

Khởi động lại nginx là tất cả các website sẽ hoạt động.

57 Comments

  1. Tien 1

    Chào Luân Trần!
    AD giúp mình xíu, mình chạy tối ưu hocvps rồi, bây giờ mình muốn làm thêm một website trong hocvps luôn, mình có chọn thêm website sau đó đã upload và nhấn phân quyền nhưng
    Ở web 1 : địa chỉ ip mình là 34.32.90.2xx thì mình trỏ về cloudfire ip đó
    Vậy ở web 2 mình trỏ ip như thế nào, nếu trỏ ip trên chắc nó lại về trang 1.

    1. Luân Trần Admin

      Bạn vẫn trỏ về IP VPS nhé, hệ thống tự động phân biệt được mà 😛

  2. Thành 2

    bạn ơi cho mình hỏi mình dùng hocvps để tạo thêm site mới mà cái site mới cứ trỏ về site đầu tiên của mình, mình đã reset nginx nhiều lần mà ko có kết quả, tks bạn

      1. Luân Trần Admin

        Gửi thông tin domain với SSH vào mail mình check coi, chắc bạn chưa dùng quen ấy mà

  3. vannguyen 10

    Nếu mình đã cài hocvps thì không cần làm theo bài này mà vào luôn hocvps để cài phải ko bạn, mình chưa hiểu

    1. Việt Phương Moderator

      Đúng rồi bạn. Nếu bạn sử dụng HocVPS Script thì chỉ cần gõ hocvps rồi chọn menu 2 là thêm được website rồi. Script sẽ làm tự động cho bạn

Comment của bạn

Your email address will not be published. Required fields are marked *