การอ้างอิงตำแหน่งรูทเป็นตัวแปรในเซิร์ฟเวอร์ {} บล็อก


11

ในเซิร์ฟเวอร์ nginx ของฉัน {} block ฉันมีการรูทด้วยพา ธ ฉันจะอ้างอิงเส้นทางนี้ในภายหลังได้อย่างไร

นี่คือสิ่งที่ฉันพยายามทำ:

server {
    listen 80;
    root /var/www/foosite;

    ...

    include $root/*.ngaccess;
}

น่าเสียดายที่ใช้ $ root ไม่ทำงาน (เพราะฉันไม่ได้กำหนดไว้) Nginx มีวิธีการเข้าถึงค่ารูทหรือไม่?

คำตอบ:


15

คุณต้องการdocument_rootตัวแปร


ทำสิ่งนี้: รูท / var / www / foosite / public /; รวม $ document_root.ngaccess; ฉันได้รับข้อผิดพลาด "nginx: [ฉุกเฉิน] open ()" /etc/nginx/$document_root/.ngaccess "ล้มเหลว (2: ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว)" $ document_root ดูเหมือนว่าจะเป็นวิธีแก้ปัญหา แต่ฉันพิมพ์อะไรผิดหรือเปล่า? ตามโพสต์นี้ (และอื่น ๆ ที่ฉันเจอ) forum.linode.com/viewtopic.php?t=7898ตัวแปรไม่สามารถใช้ในข้อความสั่ง include ได้ ซึ่งหากเป็นเรื่องจริงโชคร้าย
skyler

นั่นหมายความว่า nginx กำลังประเมินเฉพาะincludeคำสั่งเมื่อเริ่มต้นไม่ใช่สำหรับทุกคำขอ (ซึ่งสมเหตุสมผล) ดังนั้นดูเหมือนว่าสิ่งที่คุณต้องการบรรลุนั้นเป็นไปไม่ได้อย่างน่าเสียดาย
mgorven

1
ฉันพบปัญหาที่นี่ด้วย: "ค่าพา ธ สามารถมีตัวแปรได้ยกเว้น $ document_root และ $ realpath_root" nginx.org/en/docs/http/…
เครื่องมือแก้ไข
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.