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.

85 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 ạ?

    1. Việt Phương Moderator

      Bạn tạo subdomain bằng WP Multisite dạng subdomain? Nếu thế bạn đưa mình cấu hình Nginx Conf của domain mình thêm phần WP Multisite cho(paste qua http://pastebin.com/ cho gọn). Ngoài ra bạn tạo sub/wildcard subdomain ở quản lý domain trỏ về VPS hết chưa?

  8. Hùng 12 comment

    Mình cài Hocvps và thêm site thì không site nào chạy hết, đã trỏ nameserver về Vultr và có cái trỏ thẳng IP của VPS cũng không được. Là bị gì nhỉ
    trỏ IP đã chạy, còn trỏ nameserver không chạy nhỉ

    1. Việt Phương Moderator

      Trỏ thẳng domain về IP VPS bạn ơi. Nếu bạn dùng Nameserver trung gian(ví dụ Cloudfare, Vultr) thì bạn phải vào trong Nameserver cấu hình

  9. longcheng 2 comment

    Mình có dùng hocvps để cài vps của mình. Mình add thêm các website(dùng hocvps menu để add) thì được nhưng không hiểu vì sao từ wbesite thứ 5 trở đi thì không được. Nó tự động redirect về web đầu tiên khi mình cài vps. Mình có làm theo các hướng dẫn trên vẫn không được.
    Mong ad hỗ trợ giúp mình với. Thanks

    1. Việt Phương Moderator

      Có thể 2 trường hợp
      1. Website thứ 5 bạn add không thành công. Tức VPS chưa nhận nó. Mọi website chưa được webserver nhận thì dù trỏ về ip VPS cũng sẽ chỉ show nội dung của website đầu tiên(mặc định)
      2. Nginx có vấn đề nên dù add thành công nhưng webserver Nginx không khởi động lại được để nhận
      Bạn nginx -tservice nginx reload ra kết quả gì

      1. longcheng 2 comment

        => nginx -t
        nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
        nginx: [emerg] open() “/home/1/logs/access.log” failed (2: No such file or direc tory)
        nginx: configuration file /etc/nginx/nginx.conf test failed

        => service nginx reload
        Redirecting to /bin/systemctl reload nginx.service

        Với 2 câu lệnh trên thì nó có 2 thông báo như vậy bạn.
        Thanks

        1. Việt Phương Moderator

          Bạn tạo domain là 1 bằng hocvps menu nhưng xóa lại thủ công, không bằng hocvps menu nên xóa không hết.
          Bạn xóa Nginx conf của domain 1 đi. rm -rf /etc/nginx/conf.d/1.conf

  10. đức 29 comment

    a cho e hỏi là e đã cấu hình thành công 1 domain mới rồi ví dụ abc.com

    vậy nếu e sử dụng web kiểu folder con abc.com/folder1 thì có cần cấu hình cái folder đó nữa ko hay nó tự chạy ạ?

    vì e làm thì cái folder đó vào đc home nhưng ấn bài viết thì die link ạ
    http://ducmu.info/blog/

  11. Hoàng 1 comment

    Mình có cái hocvps, sau đó trỏ ip vào vào thêm website khi truy cập nó báo lỗi này:

    403 Forbidden, Lỗi dns, nếu tên miền mới cập nhật ip vui lòng đợi trong giây lát.

    Không biết là nó bị cấm ở chỗ nào

    1. Việt Phương Moderator

      Bạn thêm 1 website mới và không có upload source web gì bên trong đúng không? Vậy bạn ping domain có trỏ về IP VPS chưa

Comment của bạn

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