1. Vai trò của logging trong hệ thống Reverse Proxy
Trong hệ thống có hàng trăm website và web app, logging không chỉ để “xem cho biết”, mà là:
Công cụ phát hiện sớm sự cố,
Nền tảng phân tích nguyên nhân khi có lỗi,
Cơ sở đánh giá hành vi truy cập và rủi ro bảo mật.
Reverse Proxy là nơi nhìn thấy toàn bộ lưu lượng đi vào hệ thống, vì vậy:
Log tại Reverse Proxy có giá trị cao hơn log ở từng backend riêng lẻ.
Nếu không chuẩn hóa logging ngay từ đầu, khi sự cố xảy ra:
Log thiếu thông tin,
Không phân biệt được lỗi proxy hay lỗi backend,
Không xác định được nguồn truy cập bất thường.
2. Các loại log quan trọng trong Nginx
Nginx có hai loại log chính mà Reverse Proxy cần quan tâm:
2.1. Access log
Ghi nhận:
Ai truy cập (IP)
Truy cập khi nào
Truy cập vào đâu
Trạng thái trả về (status code)
2.2. Error log
Ghi nhận:
Lỗi kết nối backend
Timeout
Lỗi SSL
Lỗi cấu hình
Hai loại log này bổ trợ cho nhau, không thể thiếu cái nào.
3. Chuẩn hóa format access log cho Reverse Proxy
3.1. Vì sao cần custom log format
Log mặc định của Nginx:
Thiếu thời gian xử lý request.
Thiếu thông tin upstream (backend).
Khó phân tích khi có nhiều web app.
Do đó cần format riêng cho Reverse Proxy.
3.2. Định nghĩa log format chuẩn
Trong /etc/nginx/nginx.conf (block http {}):
log_format proxy_main '$remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" ' 'rt=$request_time ' 'uct=$upstream_connect_time ' 'urt=$upstream_response_time ' 'uht=$upstream_header_time ' 'upstream=$upstream_addr';
Ý nghĩa các trường quan trọng:
| Trường | Ý nghĩa |
|---|---|
rt | Tổng thời gian xử lý request |
uct | Thời gian kết nối tới backend |
urt | Thời gian backend trả response |
upstream_addr | Backend đang phục vụ |
3.3. Áp dụng log format cho các site
Trong mỗi server block (hoặc chung cho toàn hệ thống):
Có thể tách log theo nhóm site nếu cần (nâng cao).
4. Theo dõi error log hiệu quả
4.1. Mức log phù hợp
Trong nginx.conf:
warnđủ để thấy lỗi quan trọng.Tránh dùng
debugtrên production.
4.2. Các lỗi cần chú ý trong error log
| Thông báo | Ý nghĩa |
|---|---|
upstream timed out | Backend chậm hoặc treo |
connect() failed | Backend không reachable |
no live upstreams | Backend down hoàn toàn |
SSL_do_handshake() | Lỗi SSL |
5. Theo dõi truy cập theo thời gian thực
5.1. Theo dõi access log trực tiếp
Phù hợp khi:
Sự cố đang xảy ra.
Kiểm tra nhanh hành vi truy cập.
5.2. Lọc theo trạng thái lỗi
Giúp phát hiện:
Lỗi backend
Lỗi proxy
5.3. Theo dõi theo domain
Nếu dùng nhiều domain chung log:
6. Phân tích truy cập bất thường
6.1. IP truy cập nhiều bất thường
Dùng để:
Phát hiện scan
Phát hiện brute-force
6.2. URL bị truy cập nhiều bất thường
7. Log và Cloudflare: lưu ý đặc biệt
Khi dùng Cloudflare:
$remote_addrlà IP Cloudflare.IP thật nằm trong
CF-Connecting-IP.
Chỉ khi đã cấu hình real_ip_header CF-Connecting-IP đúng, log mới phản ánh IP thật.
Nếu chưa, phân tích log sẽ sai hoàn toàn.
8. Log rotation – tránh đầy đĩa
8.1. Kiểm tra logrotate cho Nginx
Thông thường Debian đã có sẵn.
8.2. Không tắt log để “đỡ đầy đĩa”
Log đầy → xử lý bằng rotation.
Tắt log → mù khi có sự cố.
9. Checklist logging cho Reverse Proxy
Access log có
request_timevàupstream_*Error log mức
warnLogrotate hoạt động
Real IP đúng khi dùng Cloudflare
Biết các câu lệnh lọc log cơ bản
Kết luận
Logging & theo dõi truy cập giúp Reverse Proxy:
Nhìn thấy vấn đề trước khi người dùng phàn nàn,
Phân biệt rõ lỗi proxy hay lỗi backend,
Đưa ra quyết định failover dựa trên dữ liệu, không cảm tính.
- Đăng nhập để gửi ý kiến