Saya mencoba agar 2 arahan lokasi ini berfungsi di Nginx tapi saya mendapatkan beberapa kesalahan saat mem-boot Nginx.
location ~ ^/smx/(test|production) {
proxy_pass http://localhost:8181/cxf;
}
location ~ ^/es/(test|production) {
proxy_pass http://localhost:9200/;
}
Ini adalah kesalahan yang saya terima:
nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block
Apakah itu terdengar akrab bagi siapa pun? Apa yang saya lewatkan di sini?
/
memperbaiki masalah konfigurasi saya, sulit ditangkap, terima kasih!Ini memberitahu Anda bahwa URI dalam direktif pass proxy tidak dapat digunakan di lokasi regex. Ini karena nginx tidak dapat menggantikan bagian dari URI yang cocok dengan regex di
location
blok dengan yang dilewatkan diproxy_pass
direktif dengan cara generik.Bayangkan saja regex lokasi Anda
/foo/(.*)/bar
, dan Anda tentukanproxy_pass http://server/test
, nginx harus memetakan regex lokasi Anda ke yang lain di tingkat atas karena Anda tidak ingin mengakhirinya/foo/test/bar/something
tetapi dengan/test/something
. Jadi itu tidak mungkin secara asli.Jadi untuk bagian ini menggunakan yang berikut ini harus berfungsi:
Namun, penulisan ulang pengalihan tidak cocok dengan pola blok lokasi URI karena pengubahan penulisan URI saat ini sedang diproses, sehingga tidak mungkin untuk mengubah
Location
header berdasarkan permintaan awal sebelum menulis ulang.sumber