Saya memiliki dua lokasi di nginx config yang berfungsi:
location ^~ /media/ {
proxy_pass http://backend.example.com;
}
location ^~ /static/ {
proxy_pass http://backend.example.com;
}
Bagaimana saya bisa menggabungkan keduanya menjadi satu lokasi?
Apa yang telah saya lakukan:
Saya mencoba saran ini
location ~ ^/(static|media)/ {
proxy_pass http://backend.example.com;
}
tapi itu tidak berhasil untukku.
Juga, ketika saya tidak menggunakan backends, konfigurasi berikut berfungsi dengan benar:
location ~ ^/(static|media)/ {
root /home/project_root;
}
perbarui (beberapa string dari log)
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36 OPR/18.0.1284.68"
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/font-awesome/css/font-awesome.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/bootstrap/css/bootstrap.min.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/css/custom.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/53$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/colorbox.css HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Sa$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/colorbox/jquery.colorbox-min.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.$
xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /static/js/scripts.js HTTP/1.1" 404 200 "http://www.example.com/content/11160/" "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537$
LARUTAN
Sebenarnya solusi saya tidak bekerja dengan baik:
location ~ ^/(static|media)/ {
root /home/project_root;
}
dan masalahnya tidak ada hubungannya dengan backend. Sebagai Guido Vaccarella benar memperhatikan itu hanya diikuti setelah location ~ ...
yang cocok, sehingga saya location ~ ...
tidak punya kesempatan untuk berlari.
Jawaban:
Menurut dokumentasi nginx :
Dalam konfigurasi Anda, lokasi berikut ditentukan sebelum yang dengan proxy_pass dan cocok dengan permintaan file js dan css di bawah statis :
Sayangnya klausa "log_not_found off" menonaktifkan pencatatan untuk setiap kesalahan yang tidak ditemukan file yang terkait dengan lokasi ini, itu sebabnya error_log Anda kosong!
Anda dapat mencoba mengomentari lokasi ini atau memindahkannya setelah lokasi dengan proxy_pass (jika Anda memerlukannya untuk file lain yang tidak ada di statis / media ).
sumber
Seharusnya...
Penutupan harus berupa kurung {}, bukan kurung kurung ().
Tidak percaya berapa lama untuk melihat itu. Guido benar dari komentar.
sumber
|media)
dalam string dimulai dengan "lokasi". Tapi kurung yang salah di sini hanya salah ketik (dikoreksi dalam pertanyaan). Jika tidak, konfigurasi nginx ini tidak akan dimuat dan akan menampilkan kesalahan sepertiunexpected ")"...
Maaf, lagi.