Android

การกำหนดค่าข้อผิดพลาด nginx และบันทึกการเข้าถึง

ATB - Could You Believe (Official Music Video) [High Quality]

ATB - Could You Believe (Official Music Video) [High Quality]

สารบัญ:

Anonim

Nginx เป็น HTTP แบบโอเพ่นซอร์สประสิทธิภาพสูงและพร็อกซีเซิร์ฟเวอร์ย้อนกลับที่รับผิดชอบในการจัดการโหลดไซต์ที่ใหญ่ที่สุดบนอินเทอร์เน็ต เมื่อจัดการเว็บเซิร์ฟเวอร์ NGINX หนึ่งในภารกิจที่บ่อยที่สุดที่คุณต้องทำคือตรวจสอบไฟล์บันทึก

การรู้วิธีกำหนดค่าและอ่านบันทึกมีประโยชน์มากเมื่อแก้ไขปัญหาเซิร์ฟเวอร์หรือแอปพลิเคชันเนื่องจากพวกเขาให้ข้อมูลการดีบักแบบละเอียด

Nginx เขียนบันทึกเหตุการณ์ในบันทึกสองประเภท: เข้าถึงบันทึกและบันทึกข้อผิดพลาด บันทึกการเข้าถึงเขียนข้อมูลเกี่ยวกับคำขอของลูกค้าและบันทึกข้อผิดพลาดเขียนข้อมูลเกี่ยวกับปัญหาเซิร์ฟเวอร์และแอปพลิเคชัน

บทความนี้สรุปวิธีการกำหนดค่าและอ่านการเข้าถึง Nginx และบันทึกข้อผิดพลาด

การกำหนดค่าบันทึกการเข้าถึง

เมื่อใดก็ตามที่คำขอของลูกค้าถูกประมวลผล Nginx จะสร้างเหตุการณ์ใหม่ในบันทึกการเข้าถึง แต่ละบันทึกเหตุการณ์มีการประทับเวลาและรวมถึงข้อมูลต่าง ๆ เกี่ยวกับลูกค้าและทรัพยากรที่ร้องขอ บันทึกการเข้าถึงสามารถแสดงตำแหน่งของผู้เข้าชมหน้าเว็บที่พวกเขาเข้าชมเวลาที่ใช้ในหน้าและอีกมากมาย

คำสั่ง log_format ช่วยให้คุณกำหนดรูปแบบของข้อความที่บันทึก คำสั่ง access_log เปิดใช้งานและตั้งค่าตำแหน่งของไฟล์บันทึกและรูปแบบที่ใช้

ไวยากรณ์พื้นฐานที่สุดของคำสั่ง access_log มีดังนี้:

access_log log_file log_format;

โดยที่ log_file เป็นพา ธ แบบเต็มไปยังไฟล์บันทึกและ log_format เป็นรูปแบบที่ใช้โดยไฟล์บันทึก

สามารถเปิดใช้งานบันทึกการเข้าถึงได้ในบล็อก http , server หรือ location คำสั่ง

โดยค่าเริ่มต้นบันทึกการเข้าถึงจะเปิดใช้งานทั่วโลกในคำสั่ง http ภายในไฟล์กำหนดค่า Nginx หลัก

/etc/nginx/nginx.conf

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

เพื่อการบำรุงรักษาที่ดีขึ้นขอแนะนำให้ตั้งค่าไฟล์บันทึกการเข้าถึงแยกต่างหากสำหรับแต่ละเซิร์ฟเวอร์บล็อก ชุดคำสั่ง access_log ใน server สั่งแทนที่ชุดหนึ่งในคำสั่ง http (ระดับที่สูงขึ้น)

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

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

หากไม่มีการระบุรูปแบบบันทึก Nginx จะใช้รูปแบบ รวมที่ กำหนดไว้ล่วงหน้าซึ่งมีลักษณะดังนี้:

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

หากต้องการเปลี่ยนรูปแบบการบันทึกอาจแทนที่การตั้งค่าเริ่มต้นหรือกำหนดรูปแบบใหม่ ตัวอย่างเช่นเพื่อกำหนดรูปแบบการบันทึกใหม่ที่ชื่อว่า main ซึ่งจะขยายรูปแบบที่ รวมกัน ด้วยค่าที่แสดงส่วนหัว X-Forwarded-For เพิ่มคำจำกัดความต่อไปนี้ใน http หรือคำสั่ง server :

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

ในการใช้รูปแบบใหม่ให้ระบุชื่อหลังจากไฟล์บันทึกการทำงานดังแสดงด้านล่าง:

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

ในขณะที่บันทึกการเข้าถึงให้ข้อมูลที่เป็นประโยชน์มาก ใช้พื้นที่ดิสก์และอาจส่งผลต่อประสิทธิภาพของเซิร์ฟเวอร์ หากเซิร์ฟเวอร์ของคุณมีทรัพยากรเหลือน้อยและคุณมีเว็บไซต์ไม่ว่างคุณอาจต้องการปิดใช้งานบันทึกการเข้าถึง หากต้องการทำเช่นนั้นให้ตั้งค่าของคำสั่ง access_log เป็น off :

access_log off;

การกำหนดค่าบันทึกข้อผิดพลาด

Nginx เขียนข้อความเกี่ยวกับข้อผิดพลาดของแอปพลิเคชันและเซิร์ฟเวอร์ทั่วไปในไฟล์บันทึกข้อผิดพลาด หากคุณพบข้อผิดพลาดในเว็บแอปพลิเคชันของคุณบันทึกข้อผิดพลาดเป็นที่แรกที่เริ่มต้นสำหรับการแก้ไขปัญหา

error_log สั่งเปิดใช้งานและการตั้งค่าที่ตั้งและระดับความรุนแรงของบันทึกข้อผิดพลาด ใช้แบบฟอร์มต่อไปนี้และสามารถตั้งค่าภายใน http , server หรือบล็อก location :

error_log log_file log_level

พารามิเตอร์ log_level ตั้งค่าระดับการบันทึก ด้านล่างนี้เป็นระดับที่แสดงตามระดับความรุนแรง (จากต่ำถึงสูง):

  • debug - ข้อความดี debug info - ข้อความที่ให้ข้อมูล notice - ประกาศ warn - คำเตือน error - ข้อผิดพลาดขณะประมวลผลคำขอ crit - ปัญหาที่สำคัญ ต้องการการดำเนินการที่รวดเร็ว alert - การแจ้งเตือน จะต้องดำเนินการทันที ฉุกเฉิน - สถานการณ์ฉุกเฉิน ระบบอยู่ในสถานะใช้ไม่ได้

แต่ละระดับการบันทึกรวมถึงระดับที่สูงขึ้น ตัวอย่างเช่นถ้าคุณตั้งค่าระดับการบันทึกเป็น warn Nginx จะบันทึก error crit alert และข้อความ emerg

เมื่อไม่ได้ระบุพารามิเตอร์ log_level จะมีค่าเริ่มต้นเป็น error

โดยค่าเริ่มต้น error_log directive จะถูกกำหนดไว้ใน http directive ภายในไฟล์หลัก nginx.conf:

/etc/nginx/nginx.conf

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

เช่นเดียวกับบันทึกการเข้าถึงขอแนะนำให้ตั้งค่าไฟล์บันทึกข้อผิดพลาดแยกต่างหากสำหรับแต่ละบล็อกเซิร์ฟเวอร์ซึ่งจะแทนที่การตั้งค่าที่สืบทอดมาจากระดับที่สูงกว่า

ตัวอย่างเช่นในการตั้งค่าบันทึกข้อผิดพลาด domain.com 'เพื่อ warn คุณจะใช้:

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

เมื่อใดก็ตามที่คุณแก้ไขไฟล์กำหนดค่าคุณต้องรีสตาร์ทบริการ Nginx เพื่อให้การเปลี่ยนแปลงมีผล

ตำแหน่งของไฟล์บันทึก

ตามค่าเริ่มต้นในการกระจาย Linux ส่วนใหญ่เช่น Ubuntu, CentOS และ Debian บันทึกการเข้าถึงและข้อผิดพลาดจะอยู่ในไดเรกทอรี /var/log/nginx

การอ่านและทำความเข้าใจไฟล์บันทึก Nginx

คุณสามารถเปิดและแยกวิเคราะห์ไฟล์บันทึกโดยใช้คำสั่งมาตรฐานเช่น cat , less , grep , cut , awk และอื่น ๆ

นี่คือตัวอย่างบันทึกจากไฟล์บันทึกการเข้าถึงที่ใช้รูปแบบบันทึกรวม Nginx ที่เป็นค่าเริ่มต้น:

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"

ลองแยกความหมายของแต่ละฟิลด์ของเรคคอร์ด:

  • $remote_addr - 192.168.33.1 - ที่อยู่ IP ของลูกค้าที่ทำการร้องขอ $remote_user - - - ผู้ใช้ที่ได้รับการรับรอง HTTP เมื่อไม่ได้ตั้งชื่อผู้ใช้ฟิลด์นี้จะแสดง - - - เวลาเซิร์ฟเวอร์ท้องถิ่น "$request" - "GET / - ประเภทคำขอเส้นทางและโปรโตคอล $status - 200 - รหัสตอบกลับของเซิร์ฟเวอร์ $body_bytes_sent - 396 - ขนาดของการตอบกลับของเซิร์ฟเวอร์หน่วยเป็นไบต์ "$http_referer" - "-" - URL ของผู้อ้างอิง "$http_user_agent" - Mozilla/5.0… - ตัวแทนผู้ใช้ของไคลเอ็นต์ (เว็บเบราว์เซอร์)

ใช้คำสั่ง tail เพื่อดูล็อกไฟล์แบบเรียลไทม์:

tail -f access.log

ข้อสรุป

ไฟล์บันทึกจะให้ข้อมูลที่เป็นประโยชน์เกี่ยวกับปัญหาเซิร์ฟเวอร์และวิธีที่ผู้เข้าชมโต้ตอบกับเว็บไซต์ของคุณ

Nginx ช่วยให้คุณสามารถกำหนดค่าการเข้าถึงและบันทึกข้อผิดพลาดตามความต้องการของคุณ

Nginx