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为以下配置。
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.conf
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后端为例
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,将看到欢迎页:
再自行访问你的其他的配置项进行测试。
