Bỏ qua đến nội dung
KhaiziNam Blog KhaiziNam Blog
Quay lại
Read in English

Hướng dẫn Cấu hình Nginx: HTTP, HTTPS, Proxy Pass

Nguyễn Hữu Khải - khaizinam

Hướng dẫn Cấu hình Nginx: HTTP, HTTPS, Proxy Pass

Khám phá cách cấu hình Nginx hiệu quả cho HTTP, HTTPS, Proxy Pass và chặn URL. Tối ưu website của bạn ngay hôm nay!

Trong thế giới web hiện đại, việc sở hữu một máy chủ web mạnh mẽ và linh hoạt là yếu tố then chốt để đảm bảo hiệu suất và bảo mật cho website của bạn. Nginx, với kiến trúc bất đồng bộ và khả năng xử lý lưu lượng truy cập cao, đã trở thành lựa chọn hàng đầu của nhiều nhà phát triển và quản trị viên hệ thống. Bài viết này sẽ đi sâu vào cách sử dụng Nginx, giải thích các quy tắc cấu hình quan trọng như HTTP, HTTPS, proxypass, cache, và cách chặn các URL không mong muốn.

Hướng dẫn Cấu hình Nginx: HTTP, HTTPS, Proxy Pass
Hướng dẫn Cấu hình Nginx: HTTP, HTTPS, Proxy Pass

Hướng dẫn Cấu hình Nginx: HTTP, HTTPS, Proxy Pass

Hiểu rõ cách cấu hình Nginx không chỉ giúp bạn tối ưu hóa tốc độ tải trang mà còn tăng cường khả năng bảo vệ website khỏi các mối đe dọa. Chúng ta sẽ cùng nhau khám phá những khía cạnh cốt lõi của Nginx, từ những khái niệm cơ bản đến các kỹ thuật cấu hình nâng cao, giúp bạn làm chủ công cụ mạnh mẽ này.

Nếu bạn đang tìm kiếm giải pháp để cải thiện hiệu suất và bảo mật cho website, thì việc nắm vững cấu hình Nginx là bước đi không thể bỏ qua. Hãy cùng bắt đầu hành trình khám phá này!

Mục Lục

Nginx là gì?

Nginx (phát âm là “engine-x”) là một máy chủ web mã nguồn mở, được biết đến với hiệu suất cao, khả năng mở rộng và tài nguyên hệ thống thấp. Nó không chỉ đóng vai trò là một máy chủ web mà còn có thể hoạt động như một bộ cân bằng tải, bộ proxy ngược (reverse proxy) và bộ nhớ đệm HTTP.

Đặc điểm nổi bật của Nginx là kiến trúc xử lý sự kiện bất đồng bộ. Thay vì tạo ra một tiến trình mới cho mỗi kết nối như các máy chủ web truyền thống, Nginx sử dụng một kiến trúc dựa trên luồng (event-driven) để xử lý hàng ngàn kết nối đồng thời với số lượng tiến trình tương đối nhỏ. Điều này giúp Nginx tiêu thụ ít bộ nhớ và CPU hơn, đặc biệt hiệu quả khi xử lý lưu lượng truy cập lớn.

Lợi ích của việc sử dụng Nginx

Việc lựa chọn Nginx cho máy chủ web của bạn mang lại nhiều lợi ích đáng kể, góp phần nâng cao hiệu suất và trải nghiệm người dùng.

Các thành phần chính trong cấu hình Nginx

Để hiểu rõ cách sử dụng Nginx, bạn cần nắm vững các khối cấu hình chính:

Hướng dẫn từng bước cấu hình Nginx

Chúng ta sẽ đi qua các bước cấu hình cơ bản cho một website.

1. Cài đặt Nginx

Quá trình cài đặt Nginx khác nhau tùy thuộc vào hệ điều hành của bạn. Trên các hệ thống dựa trên Debian/Ubuntu, bạn có thể chạy:

sudo apt update
sudo apt install nginx

Trên CentOS/RHEL, bạn dùng:

sudo yum update
sudo yum install nginx

2. Cấu hình HTTP cơ bản

Tệp cấu hình chính của Nginx thường nằm ở /etc/nginx/nginx.conf. Các tệp cấu hình cho từng website thường được đặt trong thư mục /etc/nginx/sites-available/ và được liên kết tượng trưng đến /etc/nginx/sites-enabled/.

Tạo một tệp cấu hình mới cho website của bạn, ví dụ: /etc/nginx/sites-available/mywebsite.conf:

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

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

Sau đó, kích hoạt cấu hình này bằng cách tạo liên kết tượng trưng:

sudo ln -s /etc/nginx/sites-available/mywebsite.conf /etc/nginx/sites-enabled/

Kiểm tra cú pháp cấu hình và khởi động lại Nginx:

sudo nginx -t
sudo systemctl restart nginx

3. Cấu hình HTTPS

Để bật HTTPS, bạn cần có chứng chỉ SSL/TLS. Bạn có thể lấy chứng chỉ miễn phí từ Let’s Encrypt. Giả sử bạn đã có chứng chỉ tại /etc/letsencrypt/live/your_domain.com/fullchain.pem/etc/letsencrypt/live/your_domain.com/privkey.pem.

Chỉnh sửa tệp cấu hình mywebsite.conf:

server {
    listen 80;
    server_name your_domain.com www.your_domain.com;
    return 301 https://$host$request_uri; # Chuyển hướng HTTP sang HTTPS
}

server {
    listen 443 ssl http2;
    server_name your_domain.com www.your_domain.com;

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;

    root /var/www/mywebsite/html;
    index index.html index.htm;

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

Khởi động lại Nginx sau khi thay đổi.

4. Cấu hình Proxy Pass

proxy_pass được sử dụng để chuyển tiếp các yêu cầu đến một máy chủ backend khác. Điều này rất hữu ích khi bạn có một ứng dụng web chạy trên một cổng hoặc máy chủ khác.

Ví dụ, để chuyển tiếp tất cả yêu cầu đến một ứng dụng Node.js chạy ở cổng 3000:

location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}

Các proxy_set_header quan trọng giúp máy chủ backend biết thông tin về yêu cầu gốc.

5. Cấu hình Cache

Nginx có thể cache các phản hồi từ máy chủ backend hoặc các tệp tĩnh để tăng tốc độ. Bạn có thể sử dụng proxy_cache_pathproxy_cache.

Định nghĩa đường dẫn cache trong khối http:

http {
    # ... các cấu hình khác ...
    proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m max_size=1g inactive=60m;

    server {
        # ... cấu hình server ...
        location / {
            proxy_pass http://localhost:3000;
            proxy_set_header Host $host;
            # ... các header khác ...

            proxy_cache my_cache; # Sử dụng zone cache đã định nghĩa
            proxy_cache_valid 200 302 10m; # Thời gian cache cho các mã 200, 302
            proxy_cache_valid 404 1m; # Thời gian cache cho mã 404
            add_header X-Cache-Status $upstream_cache_status; # Thêm header để kiểm tra cache
        }
    }
}

Hãy nhớ tạo thư mục /var/cache/nginx và cấp quyền ghi cho người dùng Nginx.

6. Chặn URL (Block URL)

Bạn có thể chặn truy cập vào các URL cụ thể hoặc các mẫu URL bằng cách sử dụng khối location với điều kiện.

Ví dụ, chặn truy cập vào tệp .env nhạy cảm:

location ~ /\.env {
    deny all;
    return 403;
}

Hoặc chặn các yêu cầu có chứa một chuỗi nhất định:

location ~* "bad_pattern" {
    deny all;
    return 403;
}

Dấu ~ cho biết regex match, ~* cho case-insensitive regex match, và ! đảo ngược điều kiện.

Sai lầm thường gặp khi cấu hình Nginx

Trong quá trình làm việc với Nginx, một số lỗi phổ biến có thể gây ra sự cố:

Câu hỏi thường gặp về Nginx

Hỏi: Nginx có thể thay thế hoàn toàn Apache không?

Đáp: Nginx thường được sử dụng như một reverse proxy phía trước Apache hoặc các máy chủ ứng dụng khác. Nó xuất sắc trong việc xử lý các kết nối tĩnh và cân bằng tải. Trong nhiều trường hợp, Nginx có thể xử lý toàn bộ yêu cầu web, nhưng việc kết hợp Nginx và Apache vẫn là một kiến trúc phổ biến.

Hỏi: Làm thế nào để xem log của Nginx?

Đáp: Tệp log truy cập (access log) và log lỗi (error log) của Nginx thường nằm trong /var/log/nginx/. Bạn có thể cấu hình đường dẫn và định dạng log trong tệp nginx.conf.

Hỏi: worker_processes nên được đặt bằng bao nhiêu?

Đáp: Giá trị phổ biến nhất là đặt bằng số lượng CPU core của máy chủ để tối ưu hóa hiệu suất.

Hỏi: Tôi có thể sử dụng Nginx để phục vụ file tĩnh và làm proxy cho ứng dụng cùng lúc không?

Đáp: Chắc chắn rồi. Bạn có thể sử dụng các khối location khác nhau để chỉ định cách xử lý cho các loại yêu cầu khác nhau. Một location có thể phục vụ tệp tĩnh từ root, trong khi một location khác sử dụng proxy_pass.

Hỏi: Làm thế nào để cấu hình Nginx để tránh bị tấn công DDoS cơ bản?

Đáp: Bạn có thể sử dụng các chỉ thị như limit_req_zone, limit_conn_zone để giới hạn số lượng yêu cầu và kết nối từ một địa chỉ IP. Việc cấu hình cache hiệu quả cũng giúp giảm tải cho máy chủ.

Nắm vững cấu hình Nginx là một kỹ năng quan trọng cho bất kỳ ai làm việc với web server. Từ việc thiết lập HTTP, HTTPS, đến việc sử dụng proxy_pass để kết nối với ứng dụng backend, và tận dụng cache để tăng tốc độ, Nginx cung cấp một bộ công cụ mạnh mẽ. Việc biết cách chặn các URL không mong muốn cũng góp phần bảo vệ website của bạn.

Nếu bạn cần hỗ trợ SEO hoặc tối ưu website, liên hệ khaizinam.io.vn để được tư vấn chuyên sâu.

Hãy tiếp tục thực hành và khám phá thêm các tính năng của Nginx để tối ưu hóa hiệu suất và bảo mật cho dự án của bạn.


Chia sẻ bài viết:

Bài viết liên quan

Sự Vĩ Cuồng Của FPT Và Phát Ngôn Lệch Lạc Về Lịch Sử Của Ông Nguyễn Thành Nam

Phân tích tư duy vĩ cuồng của FPT và vụ bê bối liên quan đến những phát ngôn lệch lạc, xét lại lịch sử của cựu CEO Nguyễn Thành Nam trong series Chuyện với...

CV IT Có Cần Ảnh Avatar Không? Câu Trả Lời Thực Tế

CV IT có cần ảnh avatar không? Câu trả lời thực tế từ góc nhìn HR, sếp tuyển dụng và văn hóa doanh nghiệp Việt - không né tránh, không lý thuyết suông.

Viết CV Bằng LaTeX Trên Overleaf Cho Fresher IT

Hướng dẫn viết CV bằng LaTeX trên Overleaf cho fresher IT: chọn template, dùng AI đúng cách, giữ CV gọn 1 trang và tránh lan man.

AI có thay thế lập trình viên không? Nhìn từ thị trường IT Việt Nam 2026

AI có thay thế lập trình viên không? Phân tích dữ liệu ITviec 2025-2026: 96,8% chuyên gia IT dùng AI hằng ngày, 94,2% tăng hiệu quả làm việc.

Bỏ Antigravity quay về với Codex và VSCode ?

Không phải vì tôi chưa thử đủ, không phải vì tôi ngại học tool mới. Mà vì tôi ngồi nhìn `htop` 20 phút và thấy `antigravity-server` đang ăn RAM như thể đang...

AI Giúp Bạn Kiếm Tiền Hay Đốt Tiền? Câu Chuyện Thật Từ Dev Thật

AI phát triển mạnh, nhiều dev đang chuyển sang build product. Nhưng liệu ném ý tưởng cho AI thực thi có đủ để kiếm tiền? Câu trả lời thật, từ chính những...

Tình hình thị trường IT Việt Nam tháng 05 2026

Phân tích 786 jobs IT trên ITViec tháng 05/2026: AI dẫn đầu với 163 jobs, PHP đội sổ với 23 jobs, .NET và DevOps là ngách ổn định ít cạnh tranh. Số liệu...

Tổng hợp mức lương IT theo level tại TP.HCM và Hà Nội năm 2025 - 2026

Ngành IT tại Việt Nam tiếp tục giữ mặt bằng lương cao so với nhiều ngành khác, đặc biệt tập trung tại TP.HCM và Hà Nội. Hai thành phố này hiện là trung tâm...

Cách đàm phán lương khi mới ra trường - fresher IT không nên bỏ qua

Đàm phán lương fresher IT là quá trình thương lượng mức lương với nhà tuyển dụng sau khi nhận được offer - một bước mà hầu hết sinh viên mới ra trường bỏ...

Bị từ chối phỏng vấn IT - tôi đã làm gì để pass lần sau

Bị từ chối phỏng vấn IT là trải nghiệm mà hầu như mọi fresher và junior developer đều trải qua ít nhất một lần - thường là nhiều hơn thế. Cú từ chối đầu...


Bài trước
Cơn Ác Mộng Lập Trình: Mất Sạch Index Google Chỉ Trong 1 Đêm Vì Một Dòng Code Chat Widget!
Bài tiếp theo
Tối ưu thời gian setup môi trường dự án với Docker cho VPS cấu hình thấp