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为以下配置。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 写入以下内容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.confserver { 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后端为例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执行以下命令检查配置文件是否正确。.\nginx-t如下所示即为配置成功如果nginx没有启动过双击根目录的nginx.exe启动即可。若之前已经启动且正在运行中则执行以下命令重新加载配置。.\nginx-sreload如果按前面添加了default.conf配置则访问localhost将看到欢迎页再自行访问你的其他的配置项进行测试。