暂无图片
暂无图片
5
暂无图片
暂无图片
暂无图片

nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1

一叶扁舟 2022-02-15
23745

image.png

昨日测试使用dockerfile搭建nginx,遇到了报错:nginx: [emerg] “user” directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1 。
网上没搜到相关的原因,今日找到原因,记录一下

【nginx使用教程可参考】:《Nginx详解及配合docker应用实战记录》

一、配置描述

  • 我的目录层级是这样的

image.png

  • 我的Dockerfile是这样的
FROM nginx:latest EXPOSE 80 443 VOLUME /log ADD nginx.conf /etc/nginx/nginx.conf RUN rm -rf /etc/nginx/conf.d/default.conf COPY *.conf /etc/nginx/conf.d/ COPY ./ssl/* /etc/nginx/ssl/
  • 我的nginx.conf是这样的
    image.png

二、原因分析

2.1、分析过程

nginx: [emerg] “user” directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1 。

这个报错意思说我nginx.conf文件的第一行"user"指令不被允许。
案例说这里配的没问题,并且我去掉"user",会报

nginx: [emerg] “worker_processes” directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1 。

所以虽然报错说nginx.conf有问题,但其实并不是nginx.conf配置本身的问题




我们看Dockerfile,其中下面两行的目的是:将/etc/nginx/conf.d/目录下只留我们配置的server文件 但是,结合我的目录层级,可以看到,这里*.conf把nginx.conf也copy到/etc/nginx/conf.d/目录下了,所以才报的 > nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1 。
RUN rm -rf /etc/nginx/conf.d/default.conf COPY *.conf /etc/nginx/conf.d/

2.2、原因总结

配置文件nginx.conf是要放在/etc/nginx/目录下的
nginx.conf中引入的文件(用于独立配置server),需要放在/etc/nginx/conf.d/目录下
nginx.conf会引入/etc/nginx/conf.d/目录下的*.conf文件

nginx: [emerg] “user” directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1 。

这个报错是因为:把nginx.conf是要放在了/etc/nginx/conf.d/目录下。
导致nginx.conf文件又引入nginx.conf文件,引入是引入到http块中,当然不能有"user"指令

三、问题解决

1、把独立配置着server的conf文件以443开头区分,如下
image.png

2、dockerfile中COPY时,443.*.conf筛选

FROM nginx:latest EXPOSE 80 443 VOLUME /log ADD nginx.conf /etc/nginx/nginx.conf RUN rm -rf /etc/nginx/conf.d/default.conf COPY 443.*.conf /etc/nginx/conf.d/ COPY ./ssl/* /etc/nginx/ssl/

以上,重新构建重新启动即可

最后修改时间:2022-02-15 17:02:43
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论