Nginx 站点配置多目录管理
运维需求
在使用Nginx
对多个站点进行配置和运行维护时,如果将多个站点的配置都放在同一配置文件中,对于server
部分的调整,随着时间的推移,可能对应的配置变更是由不同的人员接手,不方便系统的部署和迁移。
解决方案
为了解决这个问题,可以考虑使用include
块。用于指定加载不同的站点配置文件,一个站点一个配置文件,一个配置文件用于配置一个站点,通用部分,例如加载证书这些,放在nginx.conf
文件中。
具体操作
引入include
,指定站点配置文件模糊匹配路径,在include conf.d/*.conf
表示加载nginx.conf
平级目录conf.d
下,所有以.conf
作为后缀的文件。
worker_processes 1;
pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
sendfile on;
keepalive_timeout 120;
gzip on;
gzip_min_length 1024;
gzip_buffers 4 16k;
gzip_comp_level 2;
gzip_types *;
gzip_vary on;
include conf.d/*.conf; #添加子目录用于加载多个站点配置
}
在nginx.conf
平级,创建目录conf.d
,该目录之下将原有nginx.conf
中的server
块,迁移到新建的[自定义站点名称].conf
中间中(注意文件编码),目录conf.d
创建一个站点为zcyy-front
,配置文件为zcyy-front.conf
,案例如下。
server {
listen 5173;
server_name localhost;
access_log logs/zcyy.access.log;
error_log logs/zcyy.error.log;
location / {
root [站点绝对路径];#按实际需求填写绝对路径
index index.html index.html;
try_files $uri $uri/ /index.html; #加上这一行
}
}