Nginx进行配置文件拆分(以windows解压版为例)

Nginx压缩包解压后,只有一个默认的nginx.conf配置文件,可以通过下面的配置方法简易拆分成多个配置,提高可读性和可维护性。

原理简介

了解过 Nginx 的应该知道,配置文件的http块里面是由一个个server块组成的。

每个 server 块 都含有server_name 配置,是用来识别请求的标识。当 Nginx 接收到网络请求时,会读取请求的域名或IP,并去匹配各个 server 块里的 server_name,匹配成功就由该块负责处理。

因为有这个机制,多个项目可以同时使用 80 端口,只要请求的域名不同,就能分流到对应项目。可以把每个server块单独写成一个 .conf 文件,通过include统一引入

初始目录结构 :

一、新建 conf.d 文件夹

在Nginx 根目录下,新建一个名为 conf.d 的文件夹(名称不限,确保和include一致就行),用于存放拆分出来的配置文件。

二、修改主配置文件

替换conf/nginx.conf为以下配置。

nginx 复制代码
worker_processes  auto;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;                     # 开启高性能文件传输
    keepalive_timeout  65;                  # 保持连接不中断的超时时间(秒)

    gzip on;                                # 开启网页内容压缩
    gzip_types text/plain text/css application/json application/javascript text/xml; # 允许压缩的文件类型

    include ../conf.d/*.conf;               # 加载子配置文件
}

该配置只负责一些全局的配置,比如进程数、连接上限、和压缩规则等,并通过include引入/conf.d下的配置文件

三、在conf.d中拆分具体应用

根据需要创建独立的 .conf 文件。

默认配置:保持原始欢迎页

创建/conf.d/default.conf, 写入以下内容

nginx 复制代码
server {
    listen       80 default_server;
    server_name  localhost; 
    charset      utf-8;

    location / {
        root   html;
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

注意:这里有个default_server配置,表示如果请求的域名没匹配到任何文件的 server_name,就由这个默认服务来处理

配置A(可选):代理前端项目

创建conf.d/webapp.conf

nginx 复制代码
server {
    listen       80;
    server_name  www.mysite.com; # 写你配置的域名
    # server_name  127.0.0.1; # 若没有域名,可以用本地ip

    location / {
        root   C:/project/dist; # 前端打包文件存放的绝对路径(注意用正斜杠 /)
        index  index.html index.htm;
        try_files $uri $uri/ /index.html; # 支持 Vue/React 的 history 路由模式
    }
}
配置B(可选):反向代理

创建conf.d/springboot.conf

以下以代理spirngboot后端为例

nginx 复制代码
server {
    listen       80;
    server_name  spring.dev.mysite.com; # 写你配置的域名
    # server_name  127.0.0.2;  # 若没有域名,可以用本地ip,确保不会和其他配置文件冲突

    client_max_body_size 50m; # 文件上传大小限制

    location / {
        proxy_pass http://127.0.0.1:8080; # 转发到本机的后端接口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

四、加载配置并验证

配置完成后,在nginx根目录,打开cmd,执行以下命令检查配置文件是否正确。

shell 复制代码
.\nginx -t

如下所示即为配置成功:

如果nginx没有启动过,双击根目录的nginx.exe启动即可。

若之前已经启动且正在运行中,则执行以下命令重新加载配置。

shell 复制代码
.\nginx -s reload

如果按前面添加了default.conf配置,则访问localhost ,将看到欢迎页:

再自行访问你的其他的配置项进行测试。

相关推荐
开发小程序的之朴4 小时前
认识安企CMS-安装安企CMS的环境要求
nginx·golang·系统架构
考虑考虑10 小时前
nginx配置ssl
运维·后端·nginx
至乐活着13 小时前
ELK日志系统从零搭建到实战:Nginx日志采集与可视化全攻略
nginx·elk·elasticsearch·docker·日志系统
激情的学姐1 天前
【大型网站技术实践】初级篇:借助Nginx搭建反向代理服务器
运维·nginx
2501_943782351 天前
【共创季稿事节】摇骰子:用 ArkTS 实现随机动画与交互反馈
运维·nginx·交互·harmonyos·鸿蒙·鸿蒙系统
开发小程序的之朴2 天前
认识安企CMS - 系统概述
nginx·golang·系统架构
小蜗牛的路2 天前
使用OpenSSL生成本地证书https+nginx
网络协议·nginx·https
芷栀夏2 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
難釋懷7 天前
Nginx-rsync客户端免密
运维·nginx