nginx - por que não consigo usar variáveis no caminho proxy_pass?

2

Por que não consigo usar a variável $ user em proxy_pass - como no exemplo abaixo?

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:/;
    }
}

É possível alcançar ou desistir?

E este seria perfeito, mas também não está funcionando.

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:/;
    }
}

Eu li este e que e aqui mas nenhum deles cobre proxy_pass através do socket unix.

    
por Abc Xyz 16.04.2015 / 01:34

2 respostas

1

As diretivas de proxy pass não veem $ user e $ app como parâmetro no seu caso, você tem que dizer a ele através das variáveis $is_args e $args da seguinte forma:

proxy_pass http://unix:/home/$user$is_args$args/webapps/$app$is_args$args/run/gunicorn.sock:/;
    
por 16.04.2015 / 17:12
1

Descobrimos que 'uri' era o problema e não variáveis, então a configuração correta deveria ser

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

eu devo ativar a depuração mais rapidamente, obrigado pelo suporte.

Eu não consigo mais verificar essa solução, agora é meu palpite - porque eu fui com um conf por aplicativo, vou tentar unificar minha configuração mais tarde.

    
por 19.04.2015 / 12:07