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.

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!


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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.