Referensi lokasi root sebagai variabel di blok server {}

11

Di blok nginx server {} saya, saya telah mendefinisikan root dengan path. Bagaimana nanti saya bisa mereferensikan jalur ini?

Inilah yang ingin saya capai:

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

    ...

    include $root/*.ngaccess;
}

Sayangnya menggunakan $ root tidak berfungsi (karena saya belum mendefinisikannya). Apakah Nginx menyediakan cara untuk mengakses nilai root?

skyler
sumber

Jawaban:

15

Anda menginginkan document_rootvariabel.

Mgorven
sumber
Melakukan ini: root / var / www / foosite / public /; termasuk $ document_root.ngaccess; Saya mendapatkan kesalahan "nginx: [emerg] open ()" /etc/nginx/$document_root/.ngaccess "gagal (2: Tidak ada file atau direktori seperti itu)." $ document_root sepertinya akan menjadi solusinya, tetapi sudahkah saya salah mengetik? Menurut pos ini (dan yang lainnya saya temui) forum.linode.com/viewtopic.php?t=7898 , variabel tidak dapat digunakan dalam pernyataan sertakan. Yang, jika benar, sangat disayangkan.
skyler
Itu menyiratkan bahwa nginx hanya mengevaluasi includearahan saat startup, tidak untuk setiap permintaan (yang masuk akal), sehingga tampaknya apa yang ingin Anda capai tidak mungkin sayangnya.
mgorven
1
Saya mengalami masalah di sini juga: "Nilai jalur dapat berisi variabel, kecuali $ document_root dan $ realpath_root." nginx.org/en/docs/http/…
editor