Nginx: รูทพา ธ ที่สัมพันธ์กับไฟล์ conf


17

เป็นไปได้หรือไม่ที่จะระบุrootพา ธ ที่สัมพันธ์กับไฟล์ conf ที่มี?

เรากำลังพัฒนาเว็บแอปและเก็บapp-nginx.confไฟล์ด้วยการกำหนดค่าเฉพาะแอพในไดเรกทอรีของโครงการ ฉันต้องการที่จะรวมไฟล์นี้เป็นหลักnginx.confและมีrootเส้นทางที่ถูกต้องอ้างอิงไดเรกทอรีย่อยของโครงการที่ต้องการ ตัวอย่าง:

# /etc/nginx/nginx.conf
http {
    include /absolute/path/to/app/app-nginx.conf
}


# /absolute/path/to/app/app-nginx.conf
server {
    server_name localhost;
    listen 9090;

    root ./app;
}

หลังจากเริ่ม nginx ด้วยการกำหนดค่าที่คล้ายกัน nginx พยายามแก้ไข./appพา ธ ที่สัมพันธ์กับไดเรกทอรีการติดตั้ง nginx ( /usr/local/Cellar/nginx/1.4.3/ในกรณีของฉัน) ไม่ใช่ไดเรกทอรีของแอพ

คำตอบ:


11

เป็นไปได้หรือไม่ที่จะระบุรูทพา ธ ที่สัมพันธ์กับไฟล์ conf ที่มี?

คำตอบสั้น ๆ : ไม่

คำตอบยาว: Nginx โดยค่าเริ่มต้นจะรู้เฉพาะเกี่ยวกับเส้นทางเช่น--prefixและ--conf-pathที่ตั้งไว้ในเวลารวบรวม (อ้างอิง: https://nginx.org/en/docs/configure.html ) เราสามารถค้นหาเส้นทางต่าง ๆ ที่ Nginx ใช้โดยเรียกใช้คำสั่งnginx -V(เป็นตัวพิมพ์ใหญ่ "V") ดังนั้น--conf-pathคือที่หลักnginx.confอยู่ไฟล์และที่เส้นทางที่จะใช้สำหรับการใด ๆ ทางญาติ

ตามเอกสารอย่างเป็นทางการ ( https://nginx.org/r/root ) rootคำสั่งสามารถมีตัวแปรอื่น ๆ ได้

ขอบคุณสำหรับ @cyker สำหรับการชี้แจงหลังจาก 5 ปีของการโพสต์คำตอบเริ่มต้น!


ขอบคุณ Pothi น่าเสียดายที่ตัวเลือกไม่เหมาะกับฉัน --prefixสามารถส่งผลกระทบต่อเซิร์ฟเวอร์ nginx อื่น ๆ และจากมุมมองส่วนตัวของฉันยากขึ้นนิดหน่อยในการจัดการเปรียบเทียบกับไฟล์การกำหนดค่า และ nginx ไม่อนุญาตให้สร้างตัวแปรที่กำหนดเองด้วยsetคำสั่งภายนอกserverบริบทดังนั้นฉันไม่สามารถย้ายพา ธ สัมบูรณ์จากไฟล์ app-nginx.conf ของฉัน
Anton Moiseev

ดังนั้นเส้นทางนั้นจะใช้สำหรับเส้นทางสัมพัทธ์ใด ๆ ฉันคิดว่ามันไม่ถูกต้อง ดูเหมือนว่า Nginx จะใช้การตั้งค่า dir สำหรับตัวเลือกincludeและssl_certificateยกตัวอย่างเช่น แต่จะใช้คำนำหน้า dir rootสำหรับตัวเลือกเช่น ฉันดูเหมือนจะไม่ได้เกิดขึ้นกับรายการเต็มรูปแบบเกี่ยวกับสิ่งที่แต่ละตัวเลือกใช้
Cyker

@Cyker คุณพูดถูก อัปเดตคำตอบทันที แน่นอนมันไม่สมบูรณ์ แต่ดีกว่าคำตอบเดิม (ที่จริงผิด / ไม่ถูกต้อง)
Pothi Kalimuthu

ฉันกำลังอ่าน Nginx จาก Beginner ถึง Pro มีข้อสังเกตว่า: "คุณได้เห็นการใช้ root directive ใน block location แล้วคำสั่ง root บอก Nginx ให้ส่งคืน /image/myimage.jpg แทนที่จะเป็นพา ธ แบบเต็ม / etc / Nginx / html / app1 / ภาพ / myimage.jpg." ดังนั้น IMHO หมายความว่าการกำหนดค่า Nginx สนับสนุนเส้นทางสัมพัทธ์?
Webwoman

ที่นี่คำถามนี้เฉพาะเจาะจงกับคำสั่ง "รูท" และสามารถรองรับ "เส้นทางสัมพัทธ์กับไฟล์ conf" ได้หรือไม่
Pothi Kalimuthu

0

ฉันไม่พบวิธีใช้เส้นทางสัมพัทธ์หรือกำหนดตัวแปรทั่วโลก แต่เคล็ดลับเล็ก ๆ นี้แก้ปัญหาของฉันได้


3
เคล็ดลับเล็ก ๆ น้อย ๆ ?
Michael Hampton

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