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 /home/ nhé. Thay example.com bằng domain của bạn.

mkdir -p /home/example.com/public_html

Gán quyền

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

chown -R nginx:nginx /home/example.com/public_html

Cài đặt Virtual Hosts

Thêm file cấu hình .conf cho domain mới

nano /etc/nginx/conf.d/example.com.conf

Sử dụng đoạn code sau:

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

    location / {
        root   /home/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   /home/example.com/public_html;
    }

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

    # pass the PHP scripts to FastCGI server
    #
    location ~ \.php$ {
        root           /home/example.com/public_html;
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME   $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

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

Reload Nginx

service nginx reload

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

nano /home/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 trên

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

73 Comments

  1. Tien 1 comment

    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 comment

    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 24 comment

    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

  4. Dang 10 comment

    Em dùng hocvps add thêm 2 web với tên miền là ltkphotography.ga và tiemnam.ga nó lại trỏ về web vuhuudang.com. Tất cả cùng 1 VPS. Khắc phụ như nào ạ?

    1. Việt Phương Moderator

      Nginx đang không khởi động lại được nên cấu hình nginx cũ vẫn lưu. Bạn chạy nginx -t ra lỗi gì

      1. Dang 10 comment

        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: [emerg] open() “/home/tiemnam.tk/logs/access.log” failed (2: No such file or directory)
        nginx: configuration file /etc/nginx/nginx.conf test failed

        1. Việt Phương Moderator

          Hình như bạn xóa website tiemnam.tk nhưng chưa xóa nginx conf của web đó trong /etc/nginx/conf.? Hoặc bạn copy conf đó từ VPS khác vào chưa sửa? Nếu đúng thế thì bạn xóa file ý đi là đc.

  5. Trần Anh Đức 13 comment

    add ơi, em làm theo hướng dẫn vào add tên miền anhducpc.top vào rồi khởi động lại nginx chạy tên miền thì nó ko ra cái trang html mình tạo test mà cứ ra trang welcome nignx ban đầu.

    nginx -t thì nó báo thế này

    nginx: [warn] conflicting server name “anhducpc.top” on 0.0.0.0:80, ignored
    nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
    nginx: configuration file /etc/nginx/nginx.conf test is successful

    1. Việt Phương Moderator

      Trong thư mục gốc của web có các file nào html
      Và bên cạnh đó bạn khai báo trùng port 80 của anhducpc.top rồi. Có thể trong thư mục Nginx của bạn có 2 file cùng cấu hình anhducpc.top ?

      1. Trần Anh Đức 13 comment

        Anh ơi em cấu hình cho nó chạy được rồi ạ. Nhưng mà khi em cài laravel thì vẫn lỗi cũ ngày xưa em ko làm thế nào chạy được cả. Không biết để chạy laravel thì phải cấu hình nginx như thế nào vậy ạ.

        1. Việt Phương Moderator

          Bạn cài Laravel xong thì phải cấu hình để Nginx web nhận thư muc Laravel
          Ví dụ như bài này, mình hướng dẫn cài đặt Laravel vào trong public_html của web

          1. Trần Anh Đức 13 comment

            vậy cấu hình cho nó nhận thư mục laravel như thế nào ạ.

          2. Trần Anh Đức 13 comment

            Dạ em làm nhiều lần rồi mà ko được. Em gửi tài khoản cho anh anh xem giúp em được ko ạ.

  6. Quoc 4 comment

    Mình cài xong HocVPS vào HocVPS Script Admin nhưng tìm mãi ko thấy chỗ nào thêm website? Các bác cho hỏi phải vào chỗ nào mới thêm dc vậy?

  7. khanhtran 10 comment

    A luân cho e hỏi, e cài wp bằng hocvps, giờ e muốn tạo nhìu subdomain trỏ về vps .
    E trỏ xong thì chỉ vào được dạng 1.abc.com ở index.
    Còn khi vào trang quảng trị wp-admin thì nó lại vào bằng domain chính abc.com và ở bài viết củng vậy.
    A Luân có cách nào khắc phục ko vậy ạ?

Comment của bạn

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