Nginx รวมถึงไฟล์ปรับแต่งที่ไม่ได้อยู่ในลำดับ?


12

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

ในการตั้งค่าของฉัน20_example.comถูกรวมไว้ก่อนหน้า00_defaultนี้ซึ่งเอาชนะจุดประสงค์ของฉันในการกำหนดคำสั่งที่แชร์ (เช่นรูปแบบไฟล์บันทึก) ที่นั่น

คำตอบ:


23

ตามซอร์สโค้ดของ nginx จะใช้ฟังก์ชัน glob () พร้อมพารามิเตอร์ GLOB_NOSORTดังนั้นลำดับของการรวมไฟล์ไม่สามารถสร้างได้อย่างชัดเจน

สิ่งนี้มีการเปลี่ยนแปลงในเดือนพฤศจิกายน 2012เปิดตัวครั้งแรกใน 1.3.10 จากการเปลี่ยนแปลง :

ในตอนนี้หากใช้คำสั่ง "include" with mask บนระบบ Unix ไฟล์ที่รวมจะถูกจัดเรียงตามลำดับตัวอักษร


3

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

server {
    server_name ~^(www\.)?(?<domain>foo\.com|bar\.com|baz\.com)$;
    ...
}

และ

server {
    server_name ~^(www\.)?(?<domain>.+)$;
    ...
}

ในสถานการณ์สมมตินี้บล็อกเซิร์ฟเวอร์สองไม่สามารถแพร่กระจายผ่านสองไฟล์ได้เนื่องจากไม่สามารถรับประกันการสั่งซื้อได้


1

ในฐานะที่เป็น OP ชี้ให้เห็นถึงลำดับ log_format มันสำคัญมากในกรณีของ log_formats ที่กำหนดเองถ้าคุณวางไฟล์ dir ทั้งสองประเภทเดียวกันไฟล์บางไฟล์ที่มี log_formats ไฟล์บางไฟล์ที่มีบล็อกเซิร์ฟเวอร์ที่ใช้ log_formats เหล่านั้นผลลัพธ์จะเป็น การกำหนดค่าที่ไม่สามารถทำซ้ำได้สูง

ที่ทำงานเมื่อเราย้ายฟาร์มทำ nginx ในมือเป็นครั้งแรกเราเริ่มเห็นการติดตั้ง nginx ตั้งแต่เริ่มต้นจนถึงล้มเหลวในฮาร์ดแวร์ / การตั้งค่าที่เหมือนกันหลังจากการดีบักสถานการณ์ที่แปลกประหลาดมากมายเช่นมีสอง / etc / nginx / * (- r) ด้วย md5match และไบนารีเดียวกันที่ให้ผลลัพธ์ที่แตกต่างกัน (ข้อผิดพลาด log_format ที่ไม่ถูกต้องในที่หนึ่งและทำงานในที่อื่น) เราเรียนรู้วิธีที่ยากที่คำสั่งมันสำคัญมากสำหรับคำสั่งบางอย่างเช่น log_format

เราแก้ไขปัญหาโดยเพียงแค่ย้ายบล็อกเซิร์ฟเวอร์ออกจาก conf.d / * ไปยังโฟลเดอร์อื่นที่รวมหลังจาก conf.d / *

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.