Pada baris di bawah ini, saya mungkin memiliki file konfigurasi khusus situs yang berisi fastcgi_params tambahan yang unik untuk situs itu. Jika file ini ada, saya ingin memuatnya.
server {
listen 80 default;
server_name _;
root /path/www/$host;
# Pass PHP scripts to php-fastcgi listening on port 9000
location ~ \.php {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
if (-f /path/www/$host/nginx.conf) {
include /path/www/$host/nginx.conf;
}
}
}
Namun, ini tidak berhasil dan kesalahan yang saya dapatkan adalah:
nginx: [emerg] "include" arahan tidak diizinkan di sini di ...
Memperbarui
Saya berpikir bahwa daripada memeriksa secara terpisah, saya bisa membiarkan menyertakan memeriksa untuk saya.
server {
listen 80 default;
server_name _;
root /path/www/$host;
# Pass PHP scripts to php-fastcgi listening on port 9000
location ~ \.php {
include fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
include /path/www/$host/*.nginx;
}
}
Namun, ini sepertinya tidak berhasil.
nginx
fastcgi
configuration
Xeoncross
sumber
sumber
Jawaban:
include
melakukan hal selama server mulai - variabel runtime seperti$host
tidak dapat digunakan, juga tidak dapat digunakan dalamif
konteks, seperti yang Anda temukan.Anda harus membagi
server
blok untuk host yang berbeda. Maaf!sumber
Yah, ini agak tua, tapi bagaimanapun, saya menemukan jalan keluar.
Saya memiliki pengaturan dengan vhosts yang dikonfigurasi dalam gaya ini:
Alih-alih memeriksa apakah file itu ada (yang tidak mungkin), saya cukup melakukan:
Dengan cara ini saya cukup membuat file di
sites-customizations
-folder, yang menurut konvensi saya, dinamai sama dengan konfigurasi utama. The*
karya cukup banyak seperti jika, karena tidak pecah jika tidak ada file konfigurasi tambahan. Jika Anda suka, ini juga memungkinkan Anda untuk menambahkan beberapa konfigurasi tambahan dalam file terpisah.sumber
Saya tahu ini sudah tua tetapi solusi mungkin dapat membantu seseorang mencari jawaban seperti saya.
Saya memiliki banyak arahan ulang yang perlu saya sertakan untuk host tertentu saja dan sementara
include
tidak diizinkan dalamif
arahan, saya akhirnya menambahkan bagianif
dalam file yang saya sertakan ...Jadi saya punya
include /etc/nginx/conf.d/redirects
dan di dalam file itu saya punya:sumber
Saya mengambil keuntungan dari
glob()
perluasan pola fungsi, yang digunakan oleh nginx dalaminclude
arahan, dan bekerja dengan baik di server Debian saya.Dalam kasus Anda, cobalah untuk mengganti baris ini:
dengan yang ini:
itu adalah file mask yang hanya cocok dengan satu file, dan tidak akan membuat nginx mengeluh jika file tersebut tidak ada. Namun variabel tidak diperbolehkan dalam sertakan arahan, jadi Anda harus memberikan nilai tetap pada
<hostname>
. Kami harus membuat skrip yang menghasilkan file .conf individual (satu per vhost).Edit
Seperti yang ditunjukkan oleh Gerald Schneider , saya menyarankan untuk tetap
$host
menggunakan penggantinya, yang tidak diperbolehkan. Saya sudah mengubah saran di atas.sumber
$host
masih tidak akan bekerja di sini.