Nginx. Eredità della direttiva server.


9

Esiste un modo per ridurre la costruzione come:

server { 
  server_name regular_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server { 
  server_name mobile_site; 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

per

server api { 
  location /api/ { 
     proxy_pass 127.0.0.1:5000;
  } 
}

server extends api { 
  server_name regular_site;
  location / { 
     proxy_pass 127.0.0.1:3000;
  } 
} 

server extends api { 
  server_name mobile_site;
  location / { 
     proxy_pass 127.0.0.1:3001;
  } 
} 

Qualsiasi altro consiglio per sbarazzarsi della sezione API è il benvenuto.


Per favore, prenditi un momento per leggere le nostre FAQ. La tua domanda appare fuori tema per questo sito per me.
HopelessN00b,

@ HopelessN00b, sì, sembra offtopico. Ma qui abbiamo 3000 domande su nginx, il che è strano in questo caso. Sono sicuro che questa domanda non è per StackOverflow.
Nikolay Fominyh,

Risposte:


13

Potresti farlo abbastanza facilmente con una includedichiarazione.

/etc/nginx/conf/api_defaults.conf

location /api/ { 
  proxy_pass 127.0.0.1:5000;
}    

Quindi nella vhostconfigurazione principale .

/etc/nginx/sites-enabled/my_new_api.conf

server my_new_api {  
  server_name mobile_site;

  include "/etc/nginx/conf/api_defaults.conf";

  location / { 
    proxy_pass 127.0.0.1:3001;
  }         
}

È quello che pensavo anche io, in altre parole i blocchi di posizione non sono ereditati dai blocchi di server. Questo è diverso da come lo fa Apache, dove puoi avere posizioni definite al di fuori dei virtualhosts, che sono ereditate da tutti i virtualhosts. Con Nginx è necessario includere esplicitamente le configurazioni comuni in ciascun blocco server.
JM Becker,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.