Saya mencoba mengemas 2 aplikasi yang menggunakan nginx sebagai proxy dan mengirimkan masing-masing file konfigurasi ke dalamnya /etc/nginx/conf.d/
.
Melakukan ini dalam satu file ( combined.conf
) berfungsi dengan baik:
upstream backend1 {
http://localhost:8989;
}
upstream backend2 {
http://localhost:8990;
}
server {
location /backend1/ {
proxy_pass http://backend1;
}
location /backend2/ {
proxy_pass http://backend2;
}
Namun, ketika dipecah menjadi 2 file, salah satu pengalihan gagal secara sistematis:
backend1.conf
:upstream backend1 { http://localhost:8989; } server { location /backend1/ { proxy_pass http://backend1; }
backend2.conf
:upstream backend2 { http://localhost:8990; } server { location /backend2/ { proxy_pass http://backend2; }
Jadi pertanyaan saya adalah: dapatkah sebuah http
simpul memiliki 2 server
anak yang berbeda ?
Dokumentasi Nginx tidak mengatakan apa-apa tentang itu.
Orang lain tampaknya telah berhasil dengan arsitektur semacam ini :(
Versi Nginx adalah 1.1.19-1ubuntu0.1.
Terima kasih atas sarannya!
Jawaban:
setelah begitu gemuruh & pengujian, saya menemukan cara untuk membuatnya bekerja dan dapat mengirimkan satu file konfigurasi per aplikasi.
Ini dia, dikirim dalam satu file umum dan sepasang file upstream / lokasi per aplikasi:
/etc/nginx/conf.d/common-proxies.conf
:/etc/nginx/locations/backend1.conf
/etc/nginx/locations/backend2.conf
/etc/nginx/upstreams/backend1.conf
/etc/nginx/upstreams/backend2.conf
sumber
upstream backend { server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; }
. Juga, ini bekerja dengan;
:)Blok http dapat memiliki banyak anak server. Namun, nginx memilih satu blok server untuk memproses permintaan. Jadi, permintaan tidak pernah 'melihat' lokasi backend2 karena cocok dengan blok server pertama.
sumber
location
arahan saya yang menyebalkan dan mengambil permintaan yang dimaksudkan untuk backend2?server
blok ketika nginx mencari yang sesuaiserver
untuk meneruskan permintaan?