2014-12-01 15 views
5

Sto utilizzando Nginx come bilanciamento del carico per i miei 5 server delle app.Come reindirizzare a specifici server upstream in base all'URL della richiesta in Nginx?

vorrei reindirizzare a server specifici in base alla URL di richiesta, per esempio:

acme.com/category/*   => Server #1 
acme.com/admin/*    => Server #2 
api.acme.com     => Server #3 
Fallback for any other URL => Server #4, #5 

mio config assomiglia:

upstream backend { 
    least_conn; 
    server 10.128.1.1; 
    server 10.128.1.2; 
    server 10.128.1.3; 
    server 10.128.1.4; 
    server 10.128.1.5; 
} 

server { 
    listen 80; 
    server_name _; 

    location/{ 
    proxy_set_header Host $host; 
    proxy_pass http://backend; 
    } 
} 

non ho idea di come fare questo, dal momento che non ho molta familiarità con Nginx - qualcuno ha qualche indizio?

+0

È possibile avere più 'sezioni location'. – Thilo

risposta

7

Leggi the documentation, tutto è ben spiegato in esso. C'è in particolare un beginner's guide che spiega le basi. Si potrebbe finire con:

upstream backend { 
    least_conn; 
    server 10.128.1.4; 
    server 10.128.1.5; 
} 

server { 

    server_name _; 

    location/{ 
    proxy_set_header Host $host; 
    proxy_pass http://backend; 
    } 

} 

server { 

    server_name acme.com; 

    location /admin/ { 
    proxy_set_header Host $host; 
    proxy_pass http://10.128.1.2; 
    } 

    location /category/ { 
    proxy_set_header Host $host; 
    proxy_pass http://10.128.1.1; 
    } 

    location/{ 
    proxy_set_header Host $host; 
    proxy_pass http://backend; 
    } 

} 

server { 

    server_name api.acme.com; 

    location/{ 
    proxy_set_header Host $host; 
    proxy_pass http://10.128.1.3; 
    } 

} 
2

Sarà inoltre necessario per riscrivere l'URL altrimenti/qualcosa/otterrà inoltrate al server back-end

location /admin/ { 
    rewrite ^/admin^/ /$1 break; 
    proxy_pass http://10.128.1.2; 
} 
Problemi correlati