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 ,将看到欢迎页:

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

相关推荐
梅梅绵绵冰2 小时前
Nginx反向代理
运维·nginx
2601_965619691 天前
AI视频制作:财经数据可视化视频怎么做:AI 自动生成图表动画的实操流程
人工智能·nginx·音视频
2601_965619691 天前
历史解说视频怎么做:青铜器瓷器文物画面自动对齐的完整教程
运维·nginx·音视频
姜鱼问生2 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
xixingzhe23 天前
Nginx 看懂请求耗时瓶颈
服务器·前端·nginx
北风toto3 天前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
卜锦元3 天前
Docker Compose 部署 Nginx 1.30.6 完整指南
nginx·docker·容器
小小龙学IT3 天前
Nginx 开源 Web 服务器与反向代理深度解
前端·nginx·开源
Coisinier4 天前
docker命令管理镜像及容器
linux·运维·nginx·docker·容器·操作系统
2301_32241428044 天前
基于web的校园失物招领管理系统59695-计算机毕设 原创(免费领源码+部署教程+开发环境)
mysql·nginx·php·apache·thinkphp·phpstudy·wampserver