首页 > 解决方案 > 带有自定义配置文件的 Docker Nginx:未知指令“服务器”

问题描述

我正在尝试实现 Django / Gunicorn / Nginx dockerized。对于 Django gunicorn 和 postgresql 来说,一切都很好。但是 Nginx 决定不工作。

我制作了一个自定义的 Nginx 配置文件,它给了我错误:

未知指令“服务器”

所以我最大程度地改变了它,用 docker run 代替 docker compose 来尝试。我做了一个 Dockerfile,因为似乎卷挂载不起作用但结果相同。

这是码头文件:

FROM nginx:1.19.0-alpine
COPY ./nginx.conf /etc/nginx/conf.d/default.conf

和 nginx.conf

server {
    listen 80;
    location / {
        proxy_pass http://127.0.0.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $host;
        proxy_redirect off;
    }
}

很简单。但是,如果我尝试运行这个 docker:

docker build -t nginx .
docker run nginx

还是同样的错误。

以下是运行命令的完整日志:

docker-entrypoint.sh:/docker-entrypoint.d/ 不为空,将尝试执行配置 /docker-entrypoint.sh:在 /docker-entrypoint.d/ 中寻找 shell 脚本 /docker-entrypoint.sh:正在启动 / docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh:获取 /etc/nginx/conf.d/default.conf 10 的校验和-listen-on-ipv6-by-default.sh:/etc/nginx/conf.d/default.conf 与软件包版本不同,退出 /docker-entrypoint.sh:正在启动 /docker-entrypoint.d/20-envsubst -on-templates.sh /docker-entrypoint.sh:配置完成;准备启动 2021/02/06 13:58:21 [emerg] 1#1:/etc/nginx/conf.d/default.conf:1 中的未知指令“upstream”:1 nginx:[emerg] 未知指令“upstream” " 在 /etc/nginx/conf.d/default.conf:1

我花了将近 6 个小时在上面,可能读了一半的 StackOverflow 没有结果。

有什么拯救生命的想法吗?

标签: dockernginx

解决方案


好的 终于明白了。

我删除了完整的 .conf 文件,并且没有直接使用 vim 复制粘贴,并且可以正常工作。

看来 PyCharm 保存了一个问题。


推荐阅读