運維需求
在使用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; #加上這一行
}
}