63 votes

Comment configurer les sites nginx pour qu'ils partagent des options de configuration communes ?

Comment puis-je configurer un bloc de configuration partagé pour un ensemble de sites ?

    location / {

            proxy_pass        http://127.0.0.1:9000/;
            proxy_redirect    off;
            proxy_set_header  Host             $http_host;
            proxy_set_header  X-Real-IP        $remote_addr;
            proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

            proxy_cache cache-test;
            proxy_cache_valid 200 302 24h;
            proxy_cache_valid 404 60s;
            add_header X-Cache-Status $upstream_cache_status;

    }

    location /api/0.1/user{
            proxy_cache_key /user/$http_authorization;
    }

Maintenant, si j'essaie d'accéder à /api/0.1/user, j'obtiendrai 404 car la requête n'est pas transmise à 127.0.0.1:9000.

78voto

SleighBoy Points 838

Créer une configuration de proxy commune et l'inclure selon les besoins.

/etc/nginx/api_proxy.conf

proxy_pass        http://127.0.0.1:9000/;
proxy_redirect    off;
proxy_set_header  Host             $http_host;
proxy_set_header  X-Real-IP        $remote_addr;
proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;

proxy_cache cache-test;
proxy_cache_valid 200 302 24h;
proxy_cache_valid 404 60s;
add_header X-Cache-Status $upstream_cache_status;

Votre fichier de configuration de l'hôte

...
location /api/0.1/user {
    include /etc/nginx/api_proxy.conf;
    proxy_cache_key /user/$http_authorization;
}
...

12voto

La plupart des variables de configuration de proxy_* sont également autorisées dans le contexte du serveur, de sorte que vous pouvez les déplacer pour partager les mêmes paramètres sur plusieurs sites.

Cependant, proxy_pass ne doit être utilisé qu'à l'intérieur de l'emplacement. Vous devez donc avoir au moins cette directive dans chaque emplacement, en surchargeant éventuellement les valeurs de certaines variables proxy_* supplémentaires.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X