首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Nginx无法从我的码头撰写文件中获取我的env var

Nginx无法从我的码头撰写文件中获取我的env var
EN

Stack Overflow用户
提问于 2022-08-31 10:38:48
回答 1查看 49关注 0票数 0

我想创建一个简单的反向代理,使用nginx合并两个dev应用程序。为此,我做了这个nginx配置:

代码语言:javascript
复制
upstream angulardev{
   server ${DEV_HOST}:${ANGULAR_PORT};
}

upstream nestjsdev{
   server ${DEV_HOST}:${NESTJS_PORT};
}

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost;

    location / {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://angulardev;
    }

    location /api {
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_pass http://nestjsdev;
    }
}

因此,您可以看到,我使用了一些env来创建这个配置文件。但是,当我试图使用这个docker撰写文件来构建我的坞容器时:

代码语言:javascript
复制
version: '3.7'
services:
    nginx:
        image: nginx:1.19-alpine
        volumes:
            - "./conf/default.conf:/etc/nginx/conf.d/default.conf"
        environment:
            DEV_HOST: 192.168.1.10
            ANGULAR_PORT: 4200
            NESTJS_PORT: 8080
        ports:
            - 8000:80

我有个错误:

代码语言:javascript
复制
nginx_1  | nginx: [emerg] invalid port in upstream "${DEV_HOST}:${ANGULAR_PORT}" in /etc/nginx/conf.d/default.conf:2

对我来说,这意味着在启动之前,在坞内不要设置env var。所以,我不知道我做错了什么以及如何解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-31 10:49:36

您正在误读错误消息。这与环境变量是否设置无关。Nginx在其配置文件中根本不支持环境变量。您看到了错误,因为nginx需要一个端口,而它却找到了${ANGULAR_PORT},这在语法上是无效的。

如果您阅读码头形象的文档,有一个题为“在nginx配置中使用环境变量”的部分。部分内容如下:

nginx不支持大多数配置块中的环境变量.但是这个映像有一个函数,它将在nginx启动之前提取环境变量。 默认情况下,此函数读取/etc/nginx/templates/*.template中的模板文件,并将执行envsubst的结果输出到/etc/nginx/conf.d

因此,如果要在nginx配置中使用环境变量,则需要如下所示:

代码语言:javascript
复制
version: '3.7'
services:
    nginx:
        image: nginx:1.19-alpine
        volumes:
            - "./conf/default.conf:/etc/nginx/templates/default.conf.template"
        environment:
            DEV_HOST: 192.168.1.10
            ANGULAR_PORT: 4200
            NESTJS_PORT: 8080
        ports:
            - 8000:80
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73554653

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档