web-dev-qa-db-fra.com

Comment inverser le proxy vers différents endroits en fonction du sous-domaine dans Nginx?

J'ai plusieurs sous-domaines, tous pointant vers une machine et une adresse IP. Sur cette machine, je veux que nginx agisse en tant que proxy inverse, et en fonction du sous-domaine utilisé pour accéder à la machine, je souhaite qu'il inverse le proxy vers un autre serveur. Tous les exemples que j'ai vus d'utiliser nginx comme proxy inverse utilisent location, mais si je comprends bien, cela ne fonctionne que pour le chemin, pas pour différents sous-domaines. Comment puis-je réaliser ce que je veux?

12
markasoftware

Sauf si j'ai mal lu votre question: vous configurez simplement des blocs de serveur pour chaque sous-domaine et définissez le proxy inverse correct pour la racine de ce sous-domaine, c'est-à-dire quelque chose dans le sens de:

 server {
        server_name subdomain1.example.com;
        location / {
            proxy_pass       http://hostname1:port1;
        }
 }
 server {
        server_name subdomain2.example.com;
        location / {
            proxy_pass       http://hostname2:port2;
        }
 }
26
HBruijn

De la même manière.

location /foo {
    rewrite ^/foo(.+)$ /$1 break;
    proxy_pass http://foo;
}

location /bar {
    rewrite ^/bar(.+)$ /$1 break;
    proxy_pass http://bar;
}
3
drookie