J'essaie d'empaqueter 2 applications qui utilisent nginx comme proxy et de fournir à chacune un fichier de configuration /etc/nginx/conf.d/
.
Faire cela dans un seul fichier ( combined.conf
) fonctionne très bien:
upstream backend1 {
http://localhost:8989;
}
upstream backend2 {
http://localhost:8990;
}
server {
location /backend1/ {
proxy_pass http://backend1;
}
location /backend2/ {
proxy_pass http://backend2;
}
Cependant, lors de la division en 2 fichiers, l'une des redirections échoue systématiquement:
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; }
Ma question est donc: un http
nœud peut-il avoir 2 server
enfants différents ?
La documentation Nginx n'en dit rien.
Cependant, d' autres personnes semblent avoir réussi avec ce type d'architecture :(
La version Nginx est 1.1.19-1ubuntu0.1.
Merci pour tout conseil!
Réponses:
après tant de rumeurs et de tests, j'ai trouvé un moyen de le faire fonctionner et de pouvoir envoyer un fichier de configuration par application.
Le voici, distribué dans un fichier commun et une paire de fichiers amont / emplacement par application:
/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
la source
upstream backend { server 127.0.0.1:8080 max_fails=3 fail_timeout=30s; }
. En outre, cela fonctionne avec le;
:)Un bloc http peut avoir de nombreux enfants serveur. Cependant, nginx sélectionne un bloc serveur pour traiter une demande. Ainsi, la demande ne «voit» jamais l'emplacement backend2 car il correspond au premier bloc serveur.
la source
location
directive qui aspire et récupère la requête destinée à backend2?server
blocs lorsque nginx recherche le bonserver
pour transmettre la demande?