Почему я не могу использовать переменную $ user в proxy_pass - как в примере ниже?
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:/;
}
}
Возможно ли этого достичь или мне следует отказаться?
И этот был бы идеальным, но он тоже не работает.
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:/;
}
}
Я читаю этот и который и Вот но ни один из них не покрывает proxy_pass через сокет unix.
Обнаружено, что проблема заключалась в uri, а не в переменных, поэтому правильная конфигурация должна быть
proxy_pass http://unix:/home/$user/webapps/$app/run/gunicorn.sock:$request_uri;
я должен включить отладку быстрее, спасибо за поддержку.
Я больше не могу проверить это решение, это мое предположение прямо сейчас - поскольку я использовал одну конфигурацию для каждого приложения, я попытаюсь унифицировать свою конфигурацию позже.
Директивы передачи прокси не видят $ user и $ app в качестве параметров в вашем случае, вы должны сообщить ему через $is_args
и $args
такие переменные:
proxy_pass http://unix:/home/$user$is_args$args/webapps/$app$is_args$args/run/gunicorn.sock:/;