Bài 12: Nginx cơ bản và reverse proxy

Bài 12: Nginx cơ bản và reverse proxy

Bài này giúp anh hiểu Nginx, server block, reverse proxy và quy trình kiểm tra lỗi 404/502/SSL.

Sau bài này anh sẽ biết:

  • Nginx dùng để làm gì.
  • Cấu trúc server block cơ bản.
  • Proxy request vào backend app.
  • Test config và đọc log Nginx.

1. Nginx là gì?

Nginx có thể phục vụ static file hoặc làm reverse proxy đứng trước app Node/Python/PHP. Client gọi domain, Nginx nhận request rồi chuyển vào backend.

2. File/thư mục quan trọng

/etc/nginx/nginx.conf
/etc/nginx/sites-available/
/etc/nginx/sites-enabled/
/var/log/nginx/access.log
/var/log/nginx/error.log

3. Server block tối thiểu

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

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

4. Reverse proxy mẫu

server {
    listen 80;
    server_name app.example.com;

    location / {
        proxy_pass http://127.0.0.1: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;
    }
}

5. Lab kiểm tra Nginx

sudo nginx -t
sudo systemctl reload nginx
systemctl status nginx
sudo tail -n 100 /var/log/nginx/error.log
curl -I http://127.0.0.1

6. Tình huống thực tế: lỗi 502

502 thường nghĩa là Nginx không nói chuyện được với backend. Kiểm tra backend có chạy không, port có listen không, proxy_pass đúng không và log backend ghi gì.
ss -tulpn | grep 3000
curl -I http://127.0.0.1:3000
sudo tail -n 100 /var/log/nginx/error.log

7. Lỗi thường gặp

  • Sửa config nhưng quên nginx -t.
  • server_name sai domain.
  • Backend chỉ bind localhost nhưng proxy sai IP/port.
  • Permission thư mục web sai.
Lưu ý production: Luôn backup config trước khi sửa và dùng reload thay vì restart nếu có thể.

8. Checklist Nginx

  1. nginx -t pass.
  2. Service active.
  3. Port 80/443 listen.
  4. DNS trỏ đúng IP.
  5. Access/error log không có lỗi mới.

9. Bài tập

  1. Viết server block static site.
  2. Viết reverse proxy tới port 3000.
  3. Mô tả cách debug 502.

Tác giả: Mạnh Hoàng

Tôi là Hoàng Mạnh, người sáng lập blog SysadminSkills.com. Tôi viết về quản trị hệ thống, bảo mật máy chủ, DevOps và cách ứng dụng AI để tự động hóa công việc IT. Blog này là nơi tôi chia sẻ những gì đã học được từ thực tế – đơn giản, ngắn gọn và áp dụng được ngay.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *