У меня есть контейнер 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
Любые предложения будут высоко ценится!