Android

Cấu hình lỗi nginx và nhật ký truy cập

Установка Reverse Proxy Nginx+Apache2+SSL от Let's Encrypt за 30 минут на Debian 9

Установка Reverse Proxy Nginx+Apache2+SSL от Let's Encrypt за 30 минут на Debian 9

Mục lục:

Anonim

Nginx là một máy chủ proxy ngược và HTTP hiệu suất cao, mã nguồn mở chịu trách nhiệm xử lý tải của một số trang web lớn nhất trên Internet. Khi quản lý máy chủ web NGINX, một trong những nhiệm vụ thường xuyên nhất bạn sẽ thực hiện là kiểm tra tệp nhật ký.

Biết cách cấu hình và đọc nhật ký rất hữu ích khi xử lý sự cố máy chủ hoặc ứng dụng vì chúng cung cấp thông tin gỡ lỗi chi tiết.

Nginx viết các bản ghi về các sự kiện của nó trong hai loại nhật ký: nhật ký truy cập và nhật ký lỗi. Nhật ký truy cập ghi thông tin về các yêu cầu của khách hàng và nhật ký lỗi ghi thông tin về các sự cố của máy chủ và ứng dụng.

Bài viết này phác thảo cách cấu hình và đọc nhật ký truy cập và lỗi của Nginx.

Cấu hình Nhật ký truy cập

Bất cứ khi nào một yêu cầu của khách hàng được xử lý, Nginx sẽ tạo một sự kiện mới trong nhật ký truy cập. Mỗi bản ghi sự kiện chứa dấu thời gian và bao gồm nhiều thông tin khác nhau về máy khách và tài nguyên được yêu cầu. Nhật ký truy cập có thể cho bạn biết vị trí của khách truy cập, trang họ truy cập, họ dành bao nhiêu thời gian trên trang và hơn thế nữa.

Lệnh log_format cho phép bạn xác định định dạng của các thông điệp được ghi lại. Lệnh access_log cho phép và đặt vị trí của tệp nhật ký và định dạng được sử dụng.

Cú pháp cơ bản nhất của lệnh access_log như sau:

access_log log_file log_format;

Trong đó log_file là đường dẫn đầy đủ đến tệp nhật ký và log_format là định dạng được sử dụng bởi tệp nhật ký.

Nhật ký truy cập có thể được kích hoạt trong khối chỉ thị http , server hoặc location .

Theo mặc định, nhật ký truy cập được kích hoạt toàn cầu trong chỉ thị http bên trong tệp cấu hình Nginx chính.

/etc/nginx/nginx.conf

http {… access_log /var/log/nginx/access.log;… }

Để bảo trì tốt hơn, nên đặt một tệp nhật ký truy cập riêng cho từng khối máy chủ. Bộ chỉ thị access_log trong chỉ thị server ghi đè lên bộ được đặt trong chỉ thị http (cấp cao hơn).

/etc/nginx/conf.d/domain.com

http {… access_log /var/log/nginx/access.log;… server { server_name domain.com access_log /var/log/nginx/domain.access.log;… } }

Nếu không có định dạng nhật ký được chỉ định, Nginx sẽ sử dụng định dạng kết hợp được xác định trước giống như sau:

log_format combined '$remote_addr - $remote_user ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent"';

Để thay đổi định dạng ghi nhật ký, ghi đè cài đặt mặc định hoặc xác định cài đặt mới. Ví dụ: để xác định định dạng ghi nhật ký mới có tên chính sẽ mở rộng định dạng kết hợp với giá trị hiển thị tiêu đề X-Forwarded-For thêm định nghĩa sau trong chỉ thị http hoặc server :

log_format custom '$remote_addr - $remote_user "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"';

Để sử dụng định dạng mới, chỉ định tên của nó sau tệp nhật ký như dưới đây:

access_log /var/log/nginx/access.log custom;

Trong khi nhật ký truy cập cung cấp thông tin rất hữu ích. nó chiếm dung lượng đĩa và có thể ảnh hưởng đến hiệu suất máy chủ. Nếu máy chủ của bạn thiếu tài nguyên và bạn có một trang web bận rộn, bạn có thể muốn tắt nhật ký truy cập. Để làm điều đó, hãy đặt giá trị của lệnh access_log thành off :

access_log off;

Cấu hình Nhật ký Lỗi

Nginx viết thông báo về ứng dụng và lỗi máy chủ chung trong tệp nhật ký lỗi. Nếu bạn gặp lỗi trong ứng dụng web của mình, nhật ký lỗi là nơi đầu tiên để bắt đầu khắc phục sự cố.

Lệnh error_log cho phép và đặt vị trí và mức độ nghiêm trọng của nhật ký lỗi. Nó có dạng sau và có thể được đặt trong một khối http , server hoặc location :

error_log log_file log_level

Tham số log_level đặt mức ghi nhật ký. Dưới đây là các mức được liệt kê theo mức độ nghiêm trọng của chúng (từ thấp đến cao):

  • debug - Thông báo gỡ lỗi. info - Tin nhắn thông tin. notice - Thông báo. warn - Cảnh báo. error - Lỗi trong khi xử lý yêu cầu. phê bình - Các vấn đề quan trọng. Yêu cầu một hành động kịp thời. alert - Cảnh báo. Hành động phải được thực hiện ngay lập tức. emerg - Tình huống khẩn cấp. Hệ thống ở trạng thái không sử dụng được.

Mỗi cấp độ nhật ký bao gồm các cấp cao hơn. Ví dụ: nếu bạn đặt mức ghi nhật ký thành warn , Nginx cũng sẽ ghi nhật ký error , crit , alert và thông báo nổi lên.

Khi tham số log_level không được chỉ định, nó mặc định là error .

Theo mặc định, lệnh error_log được xác định trong lệnh http bên trong tệp nginx.conf chính:

/etc/nginx/nginx.conf

http {… error_log /var/log/nginx/error.log;… }

Tương tự như với nhật ký truy cập, nên đặt một tệp nhật ký lỗi riêng cho từng khối máy chủ, ghi đè cài đặt được kế thừa từ các cấp cao hơn.

Ví dụ: để đặt nhật ký lỗi của domain.com để warn bạn sẽ sử dụng:

http {… error_log /var/log/nginx/error.log;… server { server_name domain.com error_log /var/log/nginx/domain.error.log warn;… } }

Bất cứ khi nào bạn sửa đổi tệp cấu hình, bạn phải khởi động lại dịch vụ Nginx để các thay đổi có hiệu lực.

Vị trí của tệp nhật ký

Theo mặc định trên hầu hết các bản phân phối Linux, chẳng hạn như Ubuntu, CentOS và Debian, nhật ký truy cập và lỗi được đặt trong thư mục /var/log/nginx .

Đọc và hiểu các tệp nhật ký Nginx

Bạn có thể mở và phân tích các tệp nhật ký bằng các lệnh tiêu chuẩn như cat , less , grep , cut , awk , v.v.

Dưới đây là bản ghi ví dụ từ tệp nhật ký truy cập sử dụng định dạng nhật ký kết hợp Nginx mặc định:

192.168.33.1 - - "GET / HTTP/1.1" 200 396 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.120 Safari/537.36"

Hãy chia nhỏ ý nghĩa của từng lĩnh vực trong hồ sơ:

  • $remote_addr - 192.168.33.1 - Địa chỉ IP của khách hàng thực hiện yêu cầu. $remote_user - - - Người dùng được xác thực HTTP. Khi tên người dùng không được đặt, trường này sẽ hiển thị - . - - Giờ máy chủ cục bộ. "$request" - "GET / - Loại yêu cầu, đường dẫn và giao thức. $status - 200 - Mã phản hồi của máy chủ. $body_bytes_sent - 396 - Kích thước phản hồi của máy chủ theo byte. "$http_referer" - "-" - URL của người giới thiệu. "$http_user_agent" - Mozilla/5.0… - Tác nhân người dùng của máy khách (trình duyệt web).

Sử dụng lệnh tail để xem tệp nhật ký trong thời gian thực:

tail -f access.log

Phần kết luận

Các tệp nhật ký cung cấp cho bạn thông tin hữu ích về các sự cố máy chủ và cách khách truy cập tương tác với trang web của bạn.

Nginx cho phép bạn định cấu hình truy cập và nhật ký lỗi theo nhu cầu của bạn.

nginx