Назад | Перейти на главную страницу

Использование переменной окружения в proxy_pass nginx

У меня есть контейнер nginx, в котором я хочу перенаправить вызов api на другой сервер. Я хочу передать переменные среды из Docker Compose, чтобы иметь возможность изменять сайты без перестройки образа Docker.

Моя установка:

#docker-compose.yml

services:
  web:
    image: myimage
    environment:
      - SITE_URL: my-website.com
      - API_URL: api-site.com

В nginx.conf я использую perl_set из "modules / ngx_http_perl_module.so" для загрузки переменных среды.

#default.conf

server {
    listen 80;
    listen [::]:80;
    server_name $site_url;

    location / {
       return 301 https://$host$request_uri;
    }

}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name $site_url;
    charset utf-8;

    location / {
        add_header Cache-Control 'no-store';
        add_header Cache-Control 'no-cache';
        root   /usr/share/nginx/html;
        index  index.html index.htm;
        try_files $uri /index.html;
    }

    location /api/ {
        resolver 127.0.0.11 [::1];
        proxy_pass https://$api_url/api/;
    }

Я пытался следить за этим вопрос:

Если я сделаю:

location /api/ {
    resolver 127.0.0.11 [::1];
    set $api_test  https://api-site.com$uri$is_args$args;
    proxy_pass $api_test;
}

Это работает, и я могу использовать $ api_test в качестве переменной в proxy_pass. Но я не могу использовать api_url, даже если я делаю https: // $ api_url $ uri $ is_args $ args

Любые предложения будут высоко ценится!