首页 > 系统相关 >nginx: [emerg] "user" directive is not allowed here in /etc/nginx/conf.d/nginx.conf:1

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

时间:2024-10-29 16:01:53浏览次数:6  
标签:directive etc here nginx user conf

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

一、配置描述

  • 我的目录层级是这样的

  • 我的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 配置

二、原因分析

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开头区分,如下

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/

重启服务即可,熟悉的404 index页面出现了

标签:directive,etc,here,nginx,user,conf
From: https://www.cnblogs.com/sucretan2010/p/18513635

相关文章

  • springboot限制上传文件大小,nginx出现413
    spring.servlet.multipart.enabled=true:启用文件上传功能。spring.servlet.multipart.max-file-size=2MB:设置单个文件的最大大小为2MB。spring.servlet.multipart.max-request-size=10MB:设置包含所有文件的请求的最大大小为10MB。 如果使用了nginx,需要在配置设置到http{}......
  • nginx 代理 WebSocket 配置
    Nginx代理WebSocket配置1.配置文件位置Nginx配置文件通常位于/etc/nginx/nginx.conf,也可以在/etc/nginx/conf.d/下创建新的配置文件,例如websocket.conf。2.基本配置结构http{upstreamwebsocket{serverlocalhost:9301;#定义上游WebSocket服......
  • NGINX 1.20.1版安装stream模块
    NGINX于1.9.0版本开始支持stream模块来代理tcp连接。在Centos操作系统若前期以YUM方式安装了nginx,后期想要添加stream模块。1.首先需要检查nginx版本是否支持这一特性,若已支持可直接安装模块,否则重装。2.其次按照如下步骤(部分步骤仅做参考,未必需要执行)2.1安装CentOS的epel-releas......
  • Nginx 中动态调整 worker 进程绑定到特定 CPU 核心
    在Nginx中动态调整worker进程绑定到特定CPU核心,可以通过以下两种方式实现:###1.使用`auto`参数自动绑定Nginx1.9.10版本引入了`auto`参数,允许Nginx自动将worker进程绑定到可用的CPU上。这种方式不需要手动指定每个worker进程绑定到哪个CPU核心,Nginx会自......
  • 部署nginx-1.26.2
    1.前置工作1.1下载包zlib-1.3.1.tar.gzopenssl-3.2.2.tar.gzpcre2-10.44.tar.gznginx-1.26.2.tar.gz2.创建目录#创建⽬录mkdir-p/data/nginx/logschmod755/root#重要配置chown-Rroot:root/data/nginx3.解压安装包#前提条件,取决于nginx版本问题,由于⽐较......
  • 第四届智慧交通与城市工程国际学术会议 (STCE 2024) 2024 4th International Conferenc
    文章目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题六、咨询一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍第四届智慧交通与城市工程国际学术会议(STCE2024)将于2024年12......
  • 第四届智慧交通与城市工程国际学术会议 (STCE 2024) 2024 4th International Conferen
    @目录一、会议详情二、重要信息三、大会介绍四、出席嘉宾五、征稿主题一、会议详情二、重要信息大会官网:https://ais.cn/u/vEbMBz提交检索:EICompendex、IEEEXplore、Scopus三、大会介绍第四届智慧交通与城市工程国际学术会议(STCE2024)将于2024年12月6-8日在重庆隆重举......
  • nginx 根路径同时代理 http ws sse 三种请求
    HTTP(HyperTextTransferProtocol):超文本传输协议,是用于在客户端(通常是web浏览器)和服务器之间传输数据的协议。HTTP是Web的基础,用于请求和传输网页、图像、视频等资源。它采用请求-响应模型,支持多种方法(如GET、POST等),并可通过HTTP/1.1和HTTP/2等版本进行优化,以提高性能和用户体验。......
  • 7系列可配置逻辑块(7 Series Configurable Logic Block,CLB)
    背景先前接触到的第一个FPGA架构相关的知识便是,可配置逻辑块ConfigurableLogicBlock,CLB),基于Xilinx的7系列FPGA,现在回过头来重新回顾一下。系列目录与链接基于Xilinx的7系列FPGA,笔者在对CLB进行学习、研究时,归纳并总结出了以下博文:1、分篇1:《7系列之查找表(Look-U......
  • pg系数据库经典报错,no pg_hba.conf entry for host “x.x.x.x“, user “xxx“, datab
            上一篇文档述说了pg的一个经典报错“currenttransactionisaborted,commandsignoreduntilendoftransactionblock”【经典报错1】,这次再来述说一个pg系数据的经典报错。        pg系数据库指的是postgre、greenplum、国产数据中的kingbase、g......