Nginx: path root relatif ke file conf

17

Apakah mungkin untuk menentukan rootpath relatif ke file conf yang berisi?

Kami sedang mengembangkan aplikasi web dan menyimpan app-nginx.conffile dengan konfigurasi khusus aplikasi di direktori proyek. Saya ingin dapat memasukkan file ini ke dalam main nginx.confdan memiliki rootjalur yang benar merujuk sub-direktori proyek yang diperlukan. Contoh:

# /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;
}

Setelah memulai nginx dengan konfigurasi yang serupa nginx mencoba untuk menyelesaikan ./apppath relatif ke direktori instalasi nginx ( /usr/local/Cellar/nginx/1.4.3/dalam kasus saya), bukan ke direktori aplikasi.

Anton Moiseev
sumber

Jawaban:

11

Apakah mungkin untuk menentukan path root relatif terhadap file conf yang berisi?

Jawaban singkat: Tidak.

Jawaban panjang: Nginx, secara default, hanya tahu tentang jalur seperti --prefixdan --conf-pathyang ditetapkan pada waktu kompilasi (ref: https://nginx.org/en/docs/configure.html ). Kita dapat menemukan berbagai jalur yang digunakan oleh Nginx dengan menjalankan perintah nginx -V(huruf kapital "V"). Jadi, --conf-pathadalah tempat utama nginx.confResides berkas dan yang jalan digunakan untuk path relatif.

Namun, menurut dokumentasi resmi ( https://nginx.org/r/root ), rootarahan dapat berisi variabel lain.

Terima kasih untuk @cyker karena telah mengklarifikasi setelah 5 tahun memposting jawaban awal!

Pothi Kalimuthu
sumber
Terima kasih, Pothi. Sayangnya tidak ada opsi yang berfungsi untuk saya. --prefixdapat mempengaruhi server nginx lain dan dari sudut pandang pribadi saya sedikit lebih sulit untuk mengelola dibandingkan dengan file konfigurasi. Dan nginx tidak memungkinkan untuk membuat variabel khusus dengan konteks setluar direktif server, jadi saya tidak dapat memindahkan path absolut dari file app-nginx.conf saya.
Anton Moiseev
Jadi, jalur itu digunakan untuk jalur relatif apa pun. Saya pikir ini tidak akurat. Tampaknya nginx akan menggunakan config dir untuk opsi includedan ssl_certificate, misalnya, tetapi akan menggunakan pref aw untuk opsi seperti root. Sepertinya saya tidak datang dengan daftar lengkap tentang mana yang digunakan setiap opsi.
Cyker
@Cyker Anda benar. Diperbarui jawabannya sekarang. Tentu saja, itu tidak lengkap. Tapi, lebih baik daripada jawaban aslinya (itu memang salah / tidak akurat).
Pothi Kalimuthu
Saya membaca Nginx Dari Beginner ke Pro, tercatat bahwa: "Anda telah melihat penggunaan direktif root di dalam blok lokasi. Direktif root memberitahu Nginx untuk mengembalikan /image/myimage.jpg alih-alih jalur yang sepenuhnya memenuhi syarat / etc / nginx / html / app1 / image / myimage.jpg. " jadi IMHO itu berarti bahwa Nginx config mendukung jalur relatif?
Webwoman
Di sini, pertanyaannya adalah khusus untuk "root" direktif dan apakah itu bisa mendukung "path relatif ke file conf".
Pothi Kalimuthu
0

Saya belum menemukan cara untuk menggunakan jalur relatif atau mendefinisikan variabel global, tetapi trik kecil ini menyelesaikan masalah saya.

Anton Moiseev
sumber
3
Trik kecil apa?
Michael Hampton
Saya tidak bisa mendefinisikan variabel, tetapi saya bisa menggunakan mapdirektif dengan defaultnilai tunggal yang akan memainkan peran variabel bagi saya.
Anton Moiseev