Thêm Website Mới vào Nginx: Hướng Dẫn Chi Tiết A-Z

Bạn vừa xây dựng một website mới và muốn đưa nó lên “sóng”? Hoặc bạn đang quản lý một server Nginx và cần thêm một trang web nữa vào danh sách các website đang hoạt động? Đừng lo lắng, bài viết này sẽ hướng dẫn bạn Thêm Website Mới Vào Nginx một cách chi tiết, dễ hiểu, ngay cả khi bạn là người mới bắt đầu. Chúng ta sẽ đi qua từng bước, từ chuẩn bị đến cấu hình, và cả những mẹo nhỏ giúp bạn tránh khỏi những lỗi thường gặp.

Nginx là gì và tại sao bạn nên sử dụng nó?

Trước khi đi sâu vào chi tiết, hãy cùng nhau điểm qua một chút về Nginx. Nginx (đọc là “engine-x”) là một web server mã nguồn mở, hiệu năng cao, thường được sử dụng để phục vụ các website, làm reverse proxy, load balancer, và HTTP cache.

Tại sao Nginx lại được ưa chuộng đến vậy?

  • Hiệu năng: Nginx được thiết kế để xử lý hàng ngàn kết nối đồng thời một cách hiệu quả, giúp website của bạn hoạt động mượt mà ngay cả khi có lượng truy cập lớn.
  • Linh hoạt: Nginx có thể được cấu hình để phù hợp với nhiều loại ứng dụng khác nhau, từ các website tĩnh đơn giản đến các ứng dụng web phức tạp.
  • Bảo mật: Nginx cung cấp nhiều tính năng bảo mật, giúp bảo vệ website của bạn khỏi các cuộc tấn công.

“Nginx không chỉ là một web server, nó còn là một công cụ mạnh mẽ giúp bạn tối ưu hóa hiệu năng và bảo mật cho website của mình.” – Ông Nguyễn Văn An, Chuyên gia quản trị hệ thống tại Mekong ICT

Các bước chuẩn bị trước khi thêm website mới vào Nginx

Trước khi bắt tay vào cấu hình Nginx, chúng ta cần chuẩn bị một số thứ:

  1. Một server đã cài đặt Nginx: Nếu bạn chưa cài đặt Nginx, hãy tham khảo hướng dẫn cách cài nginx trên almalinux để cài đặt.
  2. Tên miền (Domain name): Bạn cần có một tên miền để trỏ đến website của bạn. Nếu chưa có, bạn có thể mua từ các nhà cung cấp tên miền uy tín.
  3. Quyền truy cập sudo hoặc quyền root: Bạn cần có quyền này để thực hiện các thao tác cấu hình trên server.
  4. Thư mục chứa mã nguồn website: Đảm bảo bạn đã có sẵn thư mục chứa mã nguồn website của bạn, ví dụ như /var/www/your_website.

Các bước chi tiết để thêm website mới vào Nginx

Dưới đây là quy trình từng bước để bạn có thể dễ dàng thêm một website mới vào Nginx.

Bước 1: Tạo thư mục cho website

Đầu tiên, bạn cần tạo một thư mục để chứa mã nguồn website của bạn. Sử dụng lệnh sau để tạo thư mục (thay your_website bằng tên website của bạn):

sudo mkdir -p /var/www/your_website/html

Lệnh này sẽ tạo thư mục /var/www/your_website và thư mục con html bên trong. Thư mục html sẽ chứa các file website của bạn.

Tiếp theo, bạn cần thay đổi quyền sở hữu thư mục để user hiện tại của bạn có thể chỉnh sửa file.

sudo chown -R $USER:$USER /var/www/your_website/html

Bước 2: Tạo file index.html (tùy chọn)

Nếu bạn chưa có file website, bạn có thể tạo một file index.html đơn giản để kiểm tra.

nano /var/www/your_website/html/index.html

Sau đó, dán đoạn mã HTML sau vào file:

<!DOCTYPE html>
<html>
<head>
  <title>Chào mừng đến với Website của bạn!</title>
</head>
<body>
  <h1>Website đang hoạt động!</h1>
  <p>Đây là trang web mặc định.</p>
</body>
</html>

Lưu file lại bằng cách nhấn Ctrl + X, sau đó nhấn Y để xác nhận và Enter để lưu.

Bước 3: Tạo file cấu hình server block cho website

Trong Nginx, mỗi website được cấu hình thông qua một “server block” (còn gọi là virtual host) riêng. Chúng ta cần tạo một file cấu hình server block cho website mới của bạn.

  1. Tạo file cấu hình:

    Sử dụng lệnh sau để tạo file cấu hình (thay your_website bằng tên website của bạn):

    sudo nano /etc/nginx/conf.d/your_website.conf
  2. Điền cấu hình:

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

    server {
        listen 80;
        server_name your_website.com www.your_website.com;
    
        root /var/www/your_website/html;
        index index.html index.htm;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }

    Giải thích các dòng lệnh:

    • listen 80;: Nginx sẽ lắng nghe trên cổng 80 (cổng mặc định cho HTTP).
    • server_name your_website.com www.your_website.com;: Xác định tên miền của website. Thay your_website.com bằng tên miền thực tế của bạn. Bạn có thể liệt kê nhiều tên miền, bao gồm cả phiên bản www.
    • root /var/www/your_website/html;: Xác định thư mục gốc của website.
    • index index.html index.htm;: Xác định các file index mặc định.
    • location / { ... }: Định nghĩa cách Nginx xử lý các request đến website. Trong trường hợp này, nó sẽ thử tìm file tương ứng với URI (Uniform Resource Identifier) của request. Nếu không tìm thấy, nó sẽ trả về lỗi 404.

    Bạn có thể tìm hiểu sâu hơn về cấu hình server block nginx để hiểu rõ hơn.

  3. Lưu file cấu hình:

    Lưu file lại bằng cách nhấn Ctrl + X, sau đó nhấn Y để xác nhận và Enter để lưu.

Bước 4: Kiểm tra cấu hình Nginx

Sau khi tạo file cấu hình, bạn cần kiểm tra xem cấu hình có lỗi không.

sudo nginx -t

Nếu có lỗi, Nginx sẽ hiển thị thông báo lỗi chi tiết. Hãy sửa lỗi và kiểm tra lại cho đến khi không còn lỗi.

Bước 5: Khởi động lại Nginx

Sau khi kiểm tra cấu hình thành công, bạn cần khởi động lại Nginx để áp dụng các thay đổi.

sudo systemctl restart nginx

Bước 6: Cấu hình DNS cho tên miền

Bạn cần cấu hình DNS cho tên miền của bạn để trỏ đến địa chỉ IP của server. Điều này được thực hiện tại nhà cung cấp tên miền của bạn. Thông thường, bạn cần tạo một bản ghi A (A record) trỏ tên miền của bạn đến địa chỉ IP của server.

Bước 7: Kiểm tra website

Sau khi cấu hình DNS, hãy truy cập website của bạn bằng trình duyệt. Nếu mọi thứ được cấu hình đúng, bạn sẽ thấy trang web của mình.

“Việc thêm một website mới vào Nginx không hề khó, chỉ cần bạn thực hiện theo đúng các bước và cẩn thận kiểm tra cấu hình.” – Chị Lê Thị Mai, Kỹ sư DevOps tại FPT Software

Các lỗi thường gặp và cách khắc phục

Trong quá trình thêm website vào Nginx, bạn có thể gặp một số lỗi. Dưới đây là một số lỗi thường gặp và cách khắc phục:

  • Lỗi 404 Not Found: Lỗi này thường xảy ra khi Nginx không tìm thấy file mà bạn yêu cầu. Kiểm tra lại đường dẫn trong file cấu hình server block và đảm bảo file tồn tại trong thư mục gốc của website.
  • Lỗi 502 Bad Gateway: Lỗi này thường xảy ra khi Nginx không thể kết nối đến backend server của bạn (ví dụ như PHP-FPM). Kiểm tra xem backend server của bạn có đang chạy không. Bạn có thể tham khảo bài viết nginx bị lỗi bad gateway xử lý ra sao để biết thêm chi tiết.
  • Lỗi “Invalid server block”: Lỗi này thường xảy ra khi file cấu hình server block của bạn có lỗi cú pháp. Sử dụng lệnh nginx -t để kiểm tra cấu hình và sửa lỗi.
  • Website không hiển thị sau khi cấu hình DNS: Quá trình cập nhật DNS có thể mất một khoảng thời gian (từ vài phút đến vài giờ). Hãy kiên nhẫn chờ đợi hoặc thử xóa cache DNS của trình duyệt.

Nâng cao: Cấu hình HTTPS cho website

Để tăng cường bảo mật cho website, bạn nên cấu hình HTTPS. HTTPS sử dụng giao thức SSL/TLS để mã hóa dữ liệu giữa trình duyệt và server, giúp bảo vệ thông tin của người dùng.

Để cấu hình HTTPS, bạn cần có một chứng chỉ SSL/TLS. Bạn có thể mua chứng chỉ từ các nhà cung cấp chứng chỉ hoặc sử dụng Let’s Encrypt, một tổ chức phi lợi nhuận cung cấp chứng chỉ SSL/TLS miễn phí.

Sau khi có chứng chỉ, bạn cần cấu hình Nginx để sử dụng chứng chỉ này.

  1. Cài đặt Certbot:

    Certbot là một công cụ tự động giúp bạn lấy và cài đặt chứng chỉ Let’s Encrypt.

    sudo apt update
    sudo apt install certbot python3-certbot-nginx
  2. Lấy chứng chỉ:

    Sử dụng lệnh sau để lấy chứng chỉ (thay your_website.com bằng tên miền của bạn):

    sudo certbot --nginx -d your_website.com -d www.your_website.com

    Certbot sẽ tự động cấu hình Nginx để sử dụng chứng chỉ SSL/TLS.

  3. Kiểm tra cấu hình:

    Sau khi Certbot hoàn tất, hãy kiểm tra lại cấu hình Nginx bằng lệnh nginx -t.

  4. Khởi động lại Nginx:

    Khởi động lại Nginx để áp dụng các thay đổi.

    sudo systemctl restart nginx

Sau khi cấu hình HTTPS, hãy truy cập website của bạn bằng trình duyệt và kiểm tra xem kết nối có an toàn không (biểu tượng ổ khóa màu xanh lá cây trên thanh địa chỉ).

Tối ưu hiệu năng Nginx

Để website của bạn hoạt động nhanh và hiệu quả hơn, bạn có thể thực hiện một số tối ưu sau:

  • Kích hoạt Gzip compression: Gzip compression giúp giảm kích thước các file được truyền tải, giúp website tải nhanh hơn. Bạn có thể tham khảo cấu hình gzip compression nginx để biết thêm chi tiết.
  • Sử dụng HTTP/2: HTTP/2 là một giao thức mới hơn HTTP/1.1, giúp cải thiện hiệu năng website.
  • Cache tĩnh: Cấu hình Nginx để cache các file tĩnh (ví dụ như hình ảnh, CSS, JavaScript) để giảm tải cho server.
  • Sử dụng CDN (Content Delivery Network): CDN giúp phân phối nội dung website của bạn đến nhiều server trên toàn thế giới, giúp người dùng truy cập website nhanh hơn từ bất kỳ đâu.

Nginx hay Apache: Nên chọn cái nào?

Đây là một câu hỏi thường gặp. Cả Nginx và Apache đều là những web server mạnh mẽ, nhưng chúng có những ưu điểm và nhược điểm riêng.

  • Nginx: Thích hợp cho các website có lượng truy cập lớn, yêu cầu hiệu năng cao, và sử dụng nhiều nội dung tĩnh.
  • Apache: Thích hợp cho các website sử dụng nhiều module phức tạp, cần tính linh hoạt cao, và có lượng truy cập vừa phải.

Bạn có thể tham khảo bài viết nên chọn nginx hay apache cho hosting để biết thêm chi tiết.

“Việc lựa chọn Nginx hay Apache phụ thuộc vào yêu cầu cụ thể của dự án của bạn. Hãy cân nhắc kỹ các yếu tố như hiệu năng, tính linh hoạt, và khả năng bảo mật trước khi đưa ra quyết định.” – Ông Trần Hữu Thắng, Giám đốc kỹ thuật tại VNG Cloud

Kết luận

Thêm website mới vào Nginx là một quá trình đơn giản nhưng đòi hỏi sự cẩn thận và tỉ mỉ. Hy vọng rằng, với hướng dẫn chi tiết này, bạn có thể dễ dàng thêm website của mình vào Nginx và đưa nó lên “sóng” thành công. Hãy nhớ rằng, việc tối ưu hiệu năng và bảo mật cho website là một quá trình liên tục, vì vậy hãy luôn cập nhật kiến thức và áp dụng những công nghệ mới nhất. Chúc bạn thành công!

FAQ (Câu hỏi thường gặp)

1. Tôi nên đặt tên file cấu hình server block là gì?

Bạn có thể đặt tên file cấu hình server block tùy ý, nhưng nên sử dụng tên dễ nhớ và liên quan đến tên miền của website (ví dụ: your_website.conf).

2. Tôi có thể thêm bao nhiêu website vào một server Nginx?

Bạn có thể thêm bao nhiêu website tùy ý, miễn là server của bạn đủ tài nguyên để đáp ứng.

3. Làm thế nào để kiểm tra xem Nginx đang chạy hay không?

Sử dụng lệnh sudo systemctl status nginx để kiểm tra trạng thái của Nginx.

4. Làm thế nào để xem log của Nginx?

Log của Nginx thường được lưu trữ trong thư mục /var/log/nginx. Bạn có thể sử dụng lệnh tail -f /var/log/nginx/access.log để xem log truy cập và tail -f /var/log/nginx/error.log để xem log lỗi.

5. Tại sao website của tôi hiển thị “Welcome to nginx!” sau khi tôi đã cấu hình?

Điều này có nghĩa là Nginx đang sử dụng cấu hình mặc định. Hãy đảm bảo bạn đã tạo file cấu hình server block cho website của bạn và khởi động lại Nginx.

6. Tôi có cần phải khởi động lại server sau khi thêm website mới vào Nginx?

Không cần thiết phải khởi động lại server, chỉ cần khởi động lại Nginx là đủ.

7. Làm thế nào để tắt một website trên Nginx?

Bạn có thể tắt một website bằng cách xóa hoặc đổi tên file cấu hình server block của website đó, sau đó khởi động lại Nginx.