ฉันกำลังทดสอบ nginx และต้องการส่งออกตัวแปรไปยังไฟล์บันทึก ฉันจะทำเช่นนั้นได้อย่างไรและไฟล์บันทึกใดที่จะใช้งาน
ฉันกำลังทดสอบ nginx และต้องการส่งออกตัวแปรไปยังไฟล์บันทึก ฉันจะทำเช่นนั้นได้อย่างไรและไฟล์บันทึกใดที่จะใช้งาน
คำตอบ:
คุณสามารถส่งค่าตัวแปร nginx ผ่านทางส่วนหัว มีประโยชน์สำหรับการพัฒนา
add_header X-uri "$uri";
และคุณจะเห็นในส่วนหัวการตอบสนองของเบราว์เซอร์:
X-uri:/index.php
บางครั้งฉันทำสิ่งนี้ในระหว่างการพัฒนาท้องถิ่น
นอกจากนี้ยังมีประโยชน์ในการบอกคุณว่ามีการเรียกใช้ส่วนย่อยหรือไม่ เพียงแค่โรยข้างในข้อของคุณเพื่อดูว่าพวกเขากำลังใช้
location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
add_header X-debug-message "A static file was served" always;
...
}
location ~ \.php$ {
add_header X-debug-message "A php file was used" always;
...
}
ดังนั้นการไปที่ URL เช่นhttp://www.example.com/index.phpจะเรียกส่วนหัวหลังในขณะที่ไปที่http://www.example.com/img/my-ducky.pngจะเรียกส่วนหัวเดิม
add_header
ที่จะกลับหัวไม่ว่าสิ่งที่รหัสการตอบสนอง ตัวอย่างเช่นadd_header X-debug-message "A php file was used" always;
ควรทำงานได้แม้กับรหัสข้อผิดพลาด 500 รายการ
คุณสามารถส่งคืนสตริงอย่างง่าย ๆ เป็นการตอบสนอง HTTP:
location /
{
return 200 $document_root;
}
คุณสามารถตั้งค่ารูปแบบบันทึกการเข้าถึงที่กำหนดเองโดยใช้log_format
คำสั่งที่บันทึกตัวแปรที่คุณสนใจ
error_log
เพื่อdebug
ให้คุณสามารถเห็นค่าของตัวแปรและบล็อกที่เรียกใช้งาน ตัวอย่างerror_log file.log debug
-
ในบันทึก แต่มันว่างเปล่าในรหัส nginx คุณไม่ควรตรวจสอบ-
ตลอดเวลา บางครั้งสิ่งนี้ทำให้ผู้ใช้สับสน
อีกตัวเลือกหนึ่งคือการรวมโมดูล echoเมื่อคุณสร้าง nginx หรือติดตั้งOpenRestyซึ่งเป็น nginx ที่มาพร้อมกับส่วนขยายจำนวนมาก (เช่น echo)
จากนั้นคุณสามารถโรยการกำหนดค่าของคุณด้วยคำสั่งเช่น:
echo "args: $args"
echo_log
คำสั่งในการพัฒนา
add_header
จะทำงานเกี่ยวกับคำขอที่ประสบความสำเร็จเท่านั้น เอกสารระบุว่าสามารถใช้ได้กับการตอบกลับที่มีรหัส 200, 204, 301, 302 หรือ 304 เท่านั้นดังนั้นจึงไม่สามารถใช้เพื่อแก้ไขข้อผิดพลาด HTTP ได้