具有自定义配置文件的 Docker Nginx:未知指令“服务器”
我正在尝试实现 Django / Gunicorn / Nginx dockerized。 对于 Django gunicorn 和 postgresql,一切都运行良好。但 Nginx 决定不工作。
我制作了一个自定义 Nginx 配置文件,它给了我错误:
unknown directive "server"
所以我最大限度地改变了它,尝试用 docker run 代替 docker compose。我做了一个 Dockerfile,因为卷挂载似乎不起作用,但结果相同。
这是 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/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: /etc/nginx/conf.d/default.conf differs from the packages version, exiting /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2021/02/06 13:58:21 [emerg] 1#1: unknown directive "upstream" in /etc/nginx/conf.d/default.conf:1 nginx: [emerg] unknown directive "upstream" in /etc/nginx/conf.d/default.conf:1
我花了将近 6 个小时,可能读了一半的 StackOverflow 却没有结果。
有什么救命的想法吗?
我遇到过这种情况,必须在 VS Code 中将编码从带 BOM 的 UTF-8 更改为 UTF-8 才能正常工作
好的,终于明白了。
我删除了完整的 .conf 文件,无需复制粘贴,直接用 vim 就可以了。
看来 PyCharm 保存了一个问题。