4 votes

nginx - pourquoi je ne peux pas utiliser de variables dans le chemin proxy_pass ?

Pourquoi je ne peux pas utiliser la variable $user dans le proxy_pass - comme dans l'exemple ci-dessous ?

server {
    listen 80;
    server_name ~^(?P<user>[a-z|A-Z|0-9|_|-]+)\.example\.net$;
    root /home/$user/webapps/;

    location /app/ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://unix:/home/$user/webapps/app/run/gunicorn.sock:/;
    }
}

Est-ce possible de le faire ou dois-je abandonner ?

Et celui-ci serait parfait, mais il ne fonctionne pas non plus.

server {
    listen 80;
    server_name ~^(?P<user>[a-z|A-Z|0-9|_|-]+)\.example\.net$;
    root /home/$user/webapps/;

    location ~ ^\/(?P<app>[\w-_]+)(\/.*)?$ {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://unix:/home/$user/webapps/$app/run/gunicorn.sock:/;
    }
}

Je lis ce y dass y aquí mais aucun d'entre eux ne couvre le proxy_pass à travers le socket unix.

1voto

alopatindev Points 21

Les directives de passage du proxy ne considèrent pas $user et $app comme des paramètres ; dans votre cas, vous devez l'indiquer via la directive $is_args und $args variables comme suit :

proxy_pass http://unix:/home/$user$is_args$args/webapps/$app$is_args$args/run/gunicorn.sock:/;

1voto

Abc Xyz Points 578

J'ai découvert que c'est l'uri qui pose problème et non les variables, donc la configuration correcte devrait être la suivante

proxy_pass http://unix:/home/$user/webapps/$app/run/gunicorn.sock:$request_uri;

Je devrais activer le débogage plus rapidement, merci pour votre soutien.

Je ne peux plus vérifier cette solution, c'est ce que je pense pour le moment - parce que j'ai choisi une configuration par application, j'essaierai d'unifier ma configuration plus tard.

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