使用python格式化nginx配置文件
nginx配置文件有时代码错乱,缩进不一,虽然不影响正常使用,但看着还是有些糟心:如下所示:
有没有办法可以快速格式化,又不影响功能使用呢?方法有很多,这里介绍下使用python进行快速格式化。
1、安装格式化工具:
pip install nginxfmt
2、编写shell脚本format_nginx.sh
这个shell脚本集成了备份旧文件,语法检查,重新加载配置文件,失败回滚到旧文件的功能,注意替换为自己nginx配置文件的路径
#!/bin/bash
# 自动格式化 nginx.conf 并检查语法安全NGINX_CONF="/etc/nginx/conf/nginx.conf"
BACKUP_FILE="${NGINX_CONF}.$(date +%Y%m%d%H%M%S).bak"# 1. 备份原文件
cp "$NGINX_CONF" "$BACKUP_FILE"
echo "[OK] 已备份: $BACKUP_FILE"# 2. 使用 nginxfmt 格式化(需要先安装 pip 包:pip install nginxfmt)
TMP_FILE=$(mktemp)
nginxfmt "$NGINX_CONF" > "$TMP_FILE"# 3. 检查语法
cp "$TMP_FILE" "$NGINX_CONF"
if nginx -t; thenecho "[OK] 格式化成功并通过语法检查 ✅"nginx -s reloadecho "[OK] 已自动 reload nginx"
elseecho "[ERROR] 配置有误,已恢复备份 ❌"cp "$BACKUP_FILE" "$NGINX_CONF"rm "$TMP_FILE"exit 1
firm "$TMP_FILE"
如果nginx是使用docker安装的,则使用下面的脚本:
#!/bin/bash
# 自动格式化 nginx.conf 并检查语法安全NGINX_CONF="/etc/nginx/conf/nginx.conf"
BACKUP_FILE="${NGINX_CONF}.$(date +%Y%m%d%H%M%S).bak"# 1. 备份原文件
cp "$NGINX_CONF" "$BACKUP_FILE"
echo "[OK] 已备份: $BACKUP_FILE"# 2. 使用 nginxfmt 格式化(需要先安装 pip 包:pip install nginxfmt)
TMP_FILE=$(mktemp)
nginxfmt "$NGINX_CONF" > "$TMP_FILE"if docker exec nginx nginx -t -c /etc/nginx/nginx.conf; thenecho "[OK] 格式化成功并通过语法检查 ✅"docker exec nginx nginx -s reloadecho "[OK] 已自动 reload nginx"
elseecho "[ERROR] 配置有误,已恢复备份 ❌"cp "$BACKUP_FILE" "$NGINX_CONF"rm "$TMP_FILE"exit 1
firm "$TMP_FILE"
注意替换nginx配置文件、nginx -t 和nginx -s reload为自己真实的配置,我这里nginx容器名称就叫nginx,所以可以这样写:
if docker exec nginx nginx -t -c /etc/nginx/nginx.conf; thenecho "[OK] 格式化成功并通过语法检查 ✅"docker exec nginx nginx -s reload
3.给脚本添加执行权限
注意替换shell脚本的路径
chmod +x /usr/local/bin/format_nginx.sh
4.执行脚本
./format_nginx.sh
执行后,nginx配置文件进行格式化后,代码统一对齐,看着美观,后续也好维护。