小编典典

如何使用自定义配置运行nginx docker容器?

docker

我有一个Dockerfile和自定义Nginx配置文件(与Dockerfile位于同一目录中),如下所示:

Dockerfile:

FROM nginx

COPY nginx.conf /etc/nginx/nginx.conf

nginx.conf文件:

upstream myapp1 {
          least_conn;
          server http://domain.com:81;
          server http://domain.com:82;
          server http://domain.com:83;
    }

server {
          listen 80;

          location / {
            proxy_pass http://myapp1;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection 'upgrade';
            proxy_set_header Host $host;
            proxy_cache_bypass $http_upgrade;
          }
    }

我运行以下两个命令:

docker --tls build -t nginx-image .
docker --tls run -d -p 80:80 --name nginx nginx-image

然后,我签出了所有正在运行的容器,但没有显示出来。当我搜索nginx容器的日志时,发现以下错误消息:

[emerg] 1#1:/etc/nginx/nginx.conf中的未知指令“上游”:1 nginx:[etcerg]
/etc/nginx/nginx.conf中的未知指令“上游”:

我想念什么?


阅读 310

收藏
2020-06-17

共1个答案

小编典典

NGiNX文档中所述,upstream应该在http上下文中定义。

nginx未知指令“ upstream”中所述:

当该文件通常由包含时nginx.conf,它已经包含在http上下文中:

http {
  include /etc/nginx/sites-enabled/*;
}

您需要使用-c /etc/nginx/nginx.conf或制作一个小包装,如上述代码块及其类似nginx -c内容。

如果是Docker,您可以使用abevoelker/docker- nginx以下选项查看不同的选项:

docker run -v /tmp/foo:/foo abevoelker/nginx nginx -c /foo/nginx.conf

对于默认设置nginx.conf请检查以下内容CMD

CMD ["nginx", "-c", "/data/conf/nginx.conf"]
2020-06-17