Nginx: Sajikan file statis dari direktori yang diberikan - satu tingkat terlalu dalam

13

Saya cukup baru di konfigurasi nginx. Saya mengalami beberapa kesulitan dengan masalah yang cukup mendasar. Saya ingin meng-host beberapa file statis di / doc (index.html, beberapa gambar, dll). File-file tersebut terletak di direktori yang disebut / sites / mysite / proj / doc /.

Masalahnya adalah, bahwa dengan konfigurasi nginx di bawah ini, nginx mencoba mencari direktori yang disebut "/ sites / mysite / proj / doc / doc". Mungkin ini dapat diperbaiki dengan menyetel root ke / sites / mysite / proj /, tapi saya tidak ingin berpotensi mengekspos aset (non-statis) lainnya di direktori proj /. Dan karena berbagai alasan, saya tidak bisa memindahkan direktori / doc dari tempatnya.

Saya pikir ada cara untuk menggunakan aturan Menulis Ulang untuk menyelesaikan situasi ini, tapi saya tidak benar-benar mengerti semua bagian, sehingga mengalami kesulitan merumuskan aturan.

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

Saya juga menyertakan contoh kerja file hosting dari direktori / 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"

Adakah yang tahu bagaimana saya bisa menyajikan konten statis ini?

Joe J
sumber

Jawaban: