Kiến thức Hữu ích 😍

Tối ưu Nginx và Bảo Mật Ubuntu 20.04 với Cloudflare


Trong thế giới số hiện nay, tốc độ và bảo mật không còn là lựa chọn mà đã trở thành yếu tố sống còn của một website. Người dùng mong đợi trang web tải gần như tức thì, và Google cũng ưu tiên các trang web nhanh và an toàn trên bảng xếp hạng. Tuy nhiên, việc vận hành một server là gì web truyền thống thường đối mặt với nhiều thách thức như khả năng bị tấn công DDoS, quá tải khi lưu lượng truy cập tăng đột biến, hay tốc độ tải trang chậm đối với người dùng ở xa. Để giải quyết triệt để những vấn đề này, việc kết hợp Nginx là gì và Cloudflare trên nền tảng Ubuntu 20.04 là một giải pháp toàn diện.

Bài viết này sẽ hướng dẫn bạn từng bước, từ cài đặt Nginx, tích hợp Cloudflare, đến việc tinh chỉnh cấu hình để đạt hiệu suất và bảo mật tối ưu. Chúng ta sẽ cùng nhau xây dựng một nền tảng web hosting vững chắc, sẵn sàng đáp ứng mọi yêu cầu khắt khe nhất.

Hình minh họa

Cài đặt và cấu hình Nginx trên Ubuntu 20.04

Nginx là một máy chủ web hiệu suất cao, nổi tiếng với khả năng xử lý đồng thời hàng ngàn kết nối mà không tốn nhiều tài nguyên. Đây là bước đầu tiên để xây dựng một nền tảng hosting mạnh mẽ.

Cài đặt Nginx trên Ubuntu

Trước khi cài đặt bất kỳ phần mềm nào, việc đầu tiên bạn cần làm là cập nhật hệ thống. Điều này đảm bảo bạn có được các bản vá bảo mật và phiên bản phần mềm mới nhất. Mở terminal và chạy các lệnh sau:

sudo apt update

sudo apt upgrade

Sau khi hệ thống đã được cập nhật, bạn có thể tiến hành cài đặt Nginx. Gói Nginx có sẵn trong kho lưu trữ mặc định của Ubuntu, giúp việc cài đặt trở nên vô cùng đơn giản. Chỉ cần chạy lệnh:

sudo apt install nginx

Quá trình cài đặt sẽ diễn ra tự động. Sau khi hoàn tất, dịch vụ Nginx sẽ tự khởi động. Bạn có thể kiểm tra trạng thái của Nginx bằng lệnh sudo systemctl status nginx để chắc chắn rằng mọi thứ đang hoạt động bình thường.

Hình minh họa

Cấu hình cơ bản Nginx cho web hosting

Để Nginx có thể phục vụ cho website của bạn, chúng ta cần thiết lập một “server block” (tương tự như virtual host trong Apache là gì). Server block cho phép bạn lưu trữ nhiều website trên cùng một máy chủ.

Đầu tiên, hãy tạo một file cấu hình mới cho domain của bạn trong thư mục /etc/nginx/sites-available/. Ví dụ, nếu domain của bạn là your_domain.com, hãy tạo file your_domain.com với nội dung cơ bản như sau:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;
    root /var/www/your_domain.com/html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

Cấu hình này yêu cầu Nginx lắng nghe các yêu cầu trên cổng 80 cho your_domain.com và phục vụ các tệp từ thư mục /var/www/your_domain.com/html.

Tiếp theo, bạn cần kích hoạt server block này bằng cách tạo một liên kết tượng trưng (symbolic link) từ sites-available đến sites-enabled:

sudo ln -s /etc/nginx/sites-available/your_domain.com /etc/nginx/sites-enabled/

Cuối cùng, hãy kiểm tra lại cú pháp cấu hình để đảm bảo không có lỗi và khởi động lại Nginx để áp dụng thay đổi:

sudo nginx -t

sudo systemctl restart nginx

Nếu không có thông báo lỗi, Nginx đã sẵn sàng phục vụ website của bạn.

Hình minh họa

Thiết lập bảo mật và tăng tốc web với Cloudflare

Cloudflare là một dịch vụ CDN (Mạng phân phối nội dung) và bảo mật hàng đầu. Bằng cách định tuyến lưu lượng truy cập website của bạn qua mạng lưới toàn cầu của họ, Cloudflare giúp tăng tốc độ tải trang và bảo vệ bạn khỏi các cuộc tấn công phổ biến.

Đăng ký và tích hợp Cloudflare với domain

Việc tích hợp Cloudflare rất đơn giản. Đầu tiên, hãy truy cập trang web của Cloudflare và tạo một tài khoản miễn phí. Sau khi đăng nhập, bạn sẽ được yêu cầu thêm tên miền (domain) của mình vào hệ thống.

Cloudflare sẽ tự động quét các bản ghi DNS hiện có của domain. Bạn cần xem lại và xác nhận chúng. Bước quan trọng nhất là thay đổi nameserver của domain. Cloudflare sẽ cung cấp cho bạn một cặp nameserver mới. Bạn cần đăng nhập vào trang quản trị của nhà cung cấp tên miền và cập nhật nameserver theo hướng dẫn.

Quá trình thay đổi nameserver có thể mất vài phút đến vài giờ để được cập nhật trên toàn cầu. Sau khi hoàn tất, toàn bộ lưu lượng truy cập đến domain của bạn sẽ được định tuyến qua mạng lưới của Cloudflare.

Hình minh họa

Các thiết lập bảo mật và tối ưu hiệu năng

Sau khi tích hợp thành công, bạn có thể bắt đầu tận dụng các tính năng mạnh mẽ của Cloudflare.

Bảo mật với SSL miễn phí và Firewall: Cloudflare cung cấp chứng chỉ SSL miễn phí (Universal SSL), giúp mã hóa kết nối giữa người dùng và website của bạn. Hãy vào mục “SSL/TLS” và chọn chế độ “Full (Strict)” để đảm bảo mức độ bảo mật cao nhất. Ngoài ra, hãy kích hoạt Web Application Firewall (WAF) trong mục “Security” để tự động chặn các mối đe dọa phổ biến như SQL injection và cross-site scripting.

Tối ưu hiệu năng: Trong tab “Speed” > “Optimization”, bạn có thể bật nhiều tính năng để tăng tốc website.

  • Caching: Cloudflare tự động cache các tài nguyên tĩnh như ảnh, CSS, và JavaScript. Bạn có thể tùy chỉnh cấp độ cache để tối ưu hơn nữa.
  • Minify: Bật tính năng Auto Minify cho HTML, CSS, và JavaScript. Tính năng này sẽ loại bỏ các ký tự không cần thiết khỏi mã nguồn, giúp giảm kích thước tệp và tăng tốc độ tải.
  • Brotli Compression: Brotli là một thuật toán nén hiện đại, hiệu quả hơn Gzip. Kích hoạt Brotli sẽ giúp giảm đáng kể kích thước các tệp văn bản được gửi đến trình duyệt.

Hình minh họa

Kết hợp Cloudflare và Nginx để tối ưu hiệu suất website

Để Nginx và Cloudflare hoạt động ăn ý với nhau, bạn cần thực hiện một vài tinh chỉnh trong cấu hình. Điều này đảm bảo máy chủ của bạn nhận diện chính xác người dùng và tận dụng tối đa sức mạnh của CDN.

Điều chỉnh cấu hình Nginx tương thích với Cloudflare

Một trong những vấn đề quan trọng nhất khi sử dụng proxy như Cloudflare là địa chỉ IP của người dùng sẽ bị che giấu. Theo mặc định, Nginx sẽ chỉ thấy địa chỉ IP của các máy chủ Cloudflare, không phải IP gốc của khách truy cập. Điều này gây khó khăn cho việc phân tích log và áp dụng các quy tắc bảo mật dựa trên IP.

Để khắc phục, chúng ta cần cấu hình Nginx để đọc header CF-Connecting-IP mà Cloudflare gửi kèm theo mỗi yêu cầu. Bạn cần sử dụng module ngx_http_realip_module của Nginx.

Đầu tiên, tạo một file cấu hình mới, ví dụ /etc/nginx/conf.d/cloudflare.conf, và thêm vào danh sách các dải IP của Cloudflare. Bạn có thể lấy danh sách IP mới nhất từ trang web của Cloudflare.

# Cloudflare IPs
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;
# ... (thêm đầy đủ các dải IP khác của Cloudflare)

real_ip_header CF-Connecting-IP;

Sau khi thêm file này, hãy kiểm tra cú pháp và khởi động lại Nginx. Bây giờ, access log của bạn sẽ ghi lại địa chỉ IP thực của người dùng, giúp việc theo dõi và bảo mật trở nên chính xác hơn.

Hình minh họa

Hướng dẫn thiết lập CDN trên Cloudflare

Mặc dù Cloudflare tự động cache tài nguyên tĩnh, bạn có thể kiểm soát chi tiết hơn bằng cách sử dụng “Page Rules”. Page Rules cho phép bạn tạo ra các quy tắc tùy chỉnh cho từng URL hoặc đường dẫn cụ thể trên website.

Bạn có thể tạo tối đa 3 Page Rules với tài khoản miễn phí. Dưới đây là một vài ví dụ hữu ích:

  1. Tăng cường bảo mật cho khu vực quản trị: Đối với các website WordPress, bạn có thể tạo một quy tắc cho đường dẫn *your_domain.com/wp-admin*. Tại đây, hãy đặt “Security Level” thành “High” và “Cache Level” thành “Bypass” để không cache bất kỳ nội dung nào trong khu vực nhạy cảm này.
  2. Cache mọi thứ cho trang tĩnh: Nếu bạn có các trang ít thay đổi như trang giới thiệu hoặc bài blog cũ, bạn có thể tạo quy tắc cho URL đó và đặt “Cache Level” thành “Cache Everything”. Điều này sẽ giúp trang tải gần như ngay lập tức từ máy chủ của Cloudflare.
  3. Bỏ qua cache cho các trang động: Đối với giỏ hàng hoặc các trang thanh toán, bạn cần đảm bảo nội dung luôn được làm mới. Hãy tạo quy tắc cho các URL này và đặt “Cache Level” thành “Bypass”.

Việc sử dụng Page Rules một cách thông minh sẽ giúp bạn tối ưu hóa tốc độ và bảo mật cho từng phần riêng biệt của website.

Các bước kiểm tra và khắc phục sự cố phổ biến

Ngay cả với một hệ thống được cấu hình tốt, sự cố vẫn có thể xảy ra. Biết cách kiểm tra và chẩn đoán vấn đề là kỹ năng quan trọng giúp bạn duy trì website hoạt động ổn định.

Kiểm tra trạng thái Nginx và log lỗi

Khi website không thể truy cập, việc đầu tiên cần làm là kiểm tra trạng thái dịch vụ Nginx. Sử dụng lệnh sau:

sudo systemctl status nginx

Lệnh này sẽ cho bạn biết dịch vụ có đang chạy (active (running)) hay đã dừng (inactive hoặc failed). Nếu dịch vụ bị lỗi, kết quả trả về thường sẽ gợi ý nguyên nhân.

Tiếp theo, hãy kiểm tra các file log của Nginx, thường nằm ở /var/log/nginx/. Hai file quan trọng nhất là:

Bạn có thể dùng lệnh tail -f /var/log/nginx/error.log để theo dõi file log lỗi trong thời gian thực, giúp bạn phát hiện vấn đề ngay khi nó xảy ra.

Hình minh họa

Khắc phục sự cố kết nối và cache không đồng bộ

Khi kết hợp Nginx và Cloudflare, một số lỗi phổ biến có thể xuất hiện:

  • Lỗi SSL (ví dụ: 525 SSL Handshake Failed, 526 Invalid SSL Certificate): Các lỗi này thường liên quan đến cấu hình SSL giữa Cloudflare và máy chủ gốc của bạn. Lỗi 525 xảy ra khi Cloudflare không thể thiết lập kết nối SSL an toàn với Nginx. Hãy đảm bảo bạn đã cài đặt một chứng chỉ SSL hợp lệ (ví dụ: Let’s Encrypt) trên máy chủ và chế độ SSL trên Cloudflare được đặt là “Full (Strict)”.
  • Lỗi DNS: Nếu bạn vừa thay đổi nameserver, hãy kiên nhẫn chờ đợi DNS được cập nhật. Kiểm tra lại trong dashboard của Cloudflare để chắc chắn rằng các bản ghi DNS đã được cấu hình đúng và biểu tượng đám mây màu cam (proxy) đang được bật.
  • Cache không đồng bộ: Đôi khi, bạn đã cập nhật nội dung trên website nhưng người dùng vẫn thấy phiên bản cũ. Đây là do cơ chế cache của Cloudflare. Để giải quyết, hãy đăng nhập vào Cloudflare, vào mục “Caching” > “Configuration” và chọn “Purge Everything”. Thao tác này sẽ xóa toàn bộ bộ nhớ đệm và buộc Cloudflare phải lấy lại nội dung mới nhất từ máy chủ của bạn.

Best Practices

Để hệ thống của bạn luôn hoạt động hiệu quả và an toàn, hãy tuân thủ một vài nguyên tắc thực hành tốt nhất sau đây. Đây là những thói quen nhỏ nhưng mang lại lợi ích lớn trong dài hạn.

  • Luôn cập nhật hệ thống: An ninh mạng là một cuộc chiến không ngừng nghỉ. Hãy thường xuyên chạy lệnh sudo apt updatesudo apt upgrade để đảm bảo hệ điều hành Ubuntu và các phần mềm (bao gồm cả Nginx) luôn được cập nhật các bản vá bảo mật mới nhất. Tham khảo thêm thông tin chi tiết về Vps là gì để hiểu rõ về nền tảng máy chủ ảo mà bạn có thể sử dụng cho website mình.
  • Không tắt proxy Cloudflare ở môi trường production: Biểu tượng đám mây màu cam trên Cloudflare không chỉ kích hoạt CDN mà còn che giấu địa chỉ IP gốc của máy chủ. Tắt nó (chuyển sang màu xám) sẽ khiến IP máy chủ của bạn bị lộ, tạo điều kiện cho kẻ xấu tấn công trực tiếp mà không cần đi qua lớp bảo vệ của Cloudflare.
  • Thường xuyên kiểm tra log và hiệu năng: Dành thời gian định kỳ để xem qua access.logerror.log của Nginx cũng như các báo cáo phân tích trên Cloudflare. Điều này giúp bạn sớm phát hiện các hành vi bất thường, các lỗi tiềm ẩn hoặc các cơ hội để tối ưu hóa hiệu suất.
  • Đặt lịch sao lưu định kỳ: Rủi ro mất dữ liệu luôn tồn tại. Hãy thiết lập một cơ chế sao lưu tự động cho cả cấu hình Nginx (/etc/nginx/) và toàn bộ dữ liệu website. Việc có một bản sao lưu đáng tin cậy sẽ giúp bạn phục hồi nhanh chóng khi có sự cố xảy ra.

Hình minh họa

Kết luận

Việc kết hợp Nginx trên Ubuntu 20.04 với Cloudflare tạo ra một hệ thống lưu trữ web cực kỳ mạnh mẽ, đáp ứng hai yêu cầu quan trọng nhất của một website hiện đại: tốc độ và bảo mật. Nginx đóng vai trò là một web server hiệu suất cao, ổn định tại máy chủ gốc, trong khi Cloudflare cung cấp một lớp bảo vệ vững chắc và một mạng lưới phân phối nội dung toàn cầu, giúp giảm tải cho máy chủ và tăng tốc độ truy cập cho người dùng trên khắp thế giới.

Bằng cách làm theo hướng dẫn trong bài viết, bạn không chỉ xây dựng được một nền tảng vững chắc mà còn học được cách tùy chỉnh, giám sát và khắc phục sự cố. Đây là một khoản đầu tư xứng đáng cho bất kỳ dự án web nào, từ blog cá nhân đến các trang thương mại điện tử lớn.

Đừng ngần ngại áp dụng ngay hôm nay để trải nghiệm sự khác biệt về hiệu suất. Bước tiếp theo là hãy liên tục theo dõi các chỉ số hiệu năng thực tế qua các công cụ như Google PageSpeed Insights và xem xét nâng cấp lên các gói Cloudflare trả phí khi website của bạn phát triển để có thêm nhiều tính năng nâng cao hơn.

Đánh giá