我有一个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中的未知指令“上游”:
我想念什么?
如NGiNX文档中所述,upstream应该在http上下文中定义。
upstream
http
如nginx未知指令“ upstream”中所述:
nginx
当该文件通常由包含时nginx.conf,它已经包含在http上下文中:
nginx.conf
http { include /etc/nginx/sites-enabled/*; }
您需要使用-c /etc/nginx/nginx.conf或制作一个小包装,如上述代码块及其类似nginx -c内容。
-c /etc/nginx/nginx.conf
nginx -c
如果是Docker,您可以使用abevoelker/docker- nginx以下选项查看不同的选项:
abevoelker/docker- nginx
docker run -v /tmp/foo:/foo abevoelker/nginx nginx -c /foo/nginx.conf
对于默认设置nginx.conf,请检查以下内容CMD:
CMD
CMD ["nginx", "-c", "/data/conf/nginx.conf"]