Nginx: ให้บริการไฟล์คงที่จากไดเรกทอรีที่กำหนดหนึ่งระดับลึกเกินไป


13

ฉันค่อนข้างใหม่กับการกำหนดค่า nginx ฉันมีปัญหาบางอย่างกับปัญหาพื้นฐานที่ค่อนข้างสวย ฉันต้องการโฮสต์ไฟล์คงที่บางส่วนที่ / doc (index.html, ภาพบางส่วน ฯลฯ ) ไฟล์จะอยู่ในไดเรกทอรีชื่อ / sites / mysite / proj / doc /

ปัญหาคือว่าด้วยการกำหนดค่า nginx ด้านล่าง nginx พยายามค้นหาไดเรกทอรีที่เรียกว่า "/ sites / mysite / proj / doc / doc" บางทีสิ่งนี้สามารถแก้ไขได้โดยการตั้งค่ารูทเป็น / sites / mysite / proj / แต่ฉันไม่ต้องการที่จะเปิดเผยสินทรัพย์อื่น ๆ (ไม่คงที่) ในไดเรกทอรี proj / และด้วยเหตุผลต่าง ๆ ฉันไม่สามารถย้าย doc / directory จากที่ที่มันอยู่ได้

ฉันคิดว่ามีวิธีใช้กฎการเขียนซ้ำเพื่อแก้ไขสถานการณ์นี้ แต่ฉันไม่เข้าใจทุกส่วนดังนั้นจึงมีปัญหาในการกำหนดกฎ

rewrite ^/doc/(.*)$ /$1 permanent;

ฉันได้รวมตัวอย่างการโฮสต์ไฟล์ไว้ในไดเรกทอรี / sites / mysite / htdocs / static / แล้ว

> vim locations.conf

location /static {
    root   /sites/mysite/htdocs/;
    access_log   off;
    autoindex  on;
}

location /doc {
    root   /sites/mysite/proj/doc/;
    access_log   on;
    autoindex  on;
}


2011/11/19 23:49:00 [error] 2314#0: *42 open() "/sites/mysite/proj/doc/doc" failed (2: No such file or directory), client: 100.100.100.100, server: , request: "GET /doc HTTP/1.1", host: "myhost.com"

ใครบ้างมีความคิดว่าฉันจะให้บริการเนื้อหาคงที่นี้ได้อย่างไร

คำตอบ:


20

คุณสามารถใช้นามแฝงเช่นนี้:

location /doc {
    alias   /sites/mysite/proj/doc/;
}

http://wiki.nginx.org/HttpCoreModule#alias


1
มันจะดีกว่าที่จะใช้rootแทนเอกสารที่คุณอ้างถึง (ดู "เมื่อสถานที่ตรงกับส่วนสุดท้ายของค่าของคำสั่ง")
Rafael Xavier

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