Cấu hình Nginx ghi log thông tin header HTTP

456

Cấu hình Nginx ghi log thông tin header HTTPCuongquach.com | Như bạn biết thì với dịch vụ Web Server Nginx thì luôn thường ghi log các định dạng khá là đầy đủ và cơ bản. Nhưng sẽ có những trường hợp bạn muốn ghi log cụ thể cả các giá trị khác của 1 kết nối HTTP như thông tin các header chẳng hạn, ví dụ bao gồm cả header API giữa các ứng dụng thì làm sao đây ?! May thay chúng ta có thể sử dụng một giải pháp thú vị là dùng Lua engine để code một đoạn script (lua script) nhỏ tích hợp với Nginx xử lý ghi log header HTTP.

cau-hinh-nginx-log-header-http

Cấu hình Nginx ghi log thông tin header HTTP

Điều kiện là Nginx Web Server của bạn phải cài đặt Lua tích hợp, bạn có 2 cách để cài đặt Lua engine tích hợp với Nginx :

  • Sử dụng Open Source OpenResty, fork từ Nginx tích hợp Lua nâng cao : https://openresty.org/en/
  • Tự biên dịch Lua engine với mã nguồn Nginx Web Server khi build dịch vụ Nginx.

Cả 2 cách này các bạn có thể google cách cài đặt, cũng không khó khăn gì nhiều.

Một số ứng dụng khác có thể thực hiện với Lua Script Nginx:

  • Ghi log request header, response header, request body POST, response body,..
  • Xử lý các request như một ứng dụng Gateway, do khả năng code Lua script tương tác trực tiếp với các thành phần kết nối tiếp nhận ở Nginx.

Bước 1: tạo đoạn script Lua giúp ghi thông tin header kết nối HTTP ra một biến mang tên ‘$request_headers‘. Biến này sẽ được sử dụng để ghi log. Tham khảo về ‘ngx.req.get_headers()‘ : Link

Bước 2: tạo một format riêng sử dụng biến “$request_headers” ở trên để ghi thêm thông tin header HTTP vào file log.
– Giả sử mình define log format tên ‘log_header‘ như dưới.

Bước 3: cấu hình 2 phần để vhost cụ thể mà bạn muốn ghi log header kết nối HTTP được thực hiện.

  • access_log : chỉ định tên log format vừa tạo ở trên ‘log_header‘.
  • set_by_lua_file : load file script Lua lên khi xử lý kết nối HTTP tương ứng vhost.

Sau đó reload lại Nginx hoặc khởi động lại Nginx Web Server , để apply cấu hình mới.

Bước 4: kiểm tra log của vhost vừa cấu hình xem đã apply cấu hình mới chưa. Bạn sẽ thấy nội dung thông tin các trường header của kết nối HTTP mà Nginx xử lý ở sau phần ‘req_header:’

Nguồn: https://cuongquach.com/

LEAVE A REPLY