当前位置: 首页 > ai >正文

使用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配置文件进行格式化后,代码统一对齐,看着美观,后续也好维护。

http://www.xdnf.cn/news/19173.html

相关文章:

  • OSI与TCP/IP各层功能详解
  • 吴恩达机器学习作业八:SVM支持向量机
  • 从零开始的python学习——注释与运算符
  • 机器学习 - Kaggle项目实践(6)Dogs vs. Cats Redux: Kernels Edition 猫狗二分类
  • 【Android】OkHttp发起GET请求 POST请求
  • 「从 0 到 1」的 Python-requests 爬虫完整教程
  • 内网后渗透攻击--跨域攻击
  • for in+逻辑表达式 生成迭代对象,最后转化为列表 ——注意list是生成器转化为列表,但[生成器]得到的就是一个列表,其中包含一个生成器元素
  • 字节跳动出品的 AI开发工具 : Trae:开启 AI 编程新时代
  • 解读IEC 62477-2-2018
  • 05.《ARP协议基础知识探秘》
  • 基于大模型与 PubMed 检索的光谱数据分析系统
  • 嵌入式学习笔记--LINUX系统编程--DAY03进程控制
  • Linux 笔记 Day01|课程结构
  • ubuntu24.04 qt6安装
  • Azure DevOps cherry pick
  • PromptPerfect-将你的提示词提升到完美
  • Java全栈开发面试实战:从基础到高并发的全面解析
  • 可转换公司债Level-2高频交易五档Tick级分钟历史数据分析指南
  • 2025年09月计算机二级Python选择题每日一练——第十二期
  • 目标和-背包dp
  • watch 与 computed:Vue3响应式的抉择
  • PS学习笔记
  • Kubernetes Dashboard 和 Rancher 功能对比以及详细安装步骤
  • Speculation Rules API能用于SPA网站吗?
  • 基于Kubernetes自定义调度器的资源隔离与性能优化实践指南
  • 【C语言强化训练16天】--从基础到进阶的蜕变之旅:Day16
  • 银河麒麟Kylin系统编译安装Qt5.12.12
  • 在 Git Bash 中查看 Git 仓库远程地址
  • 【学Python自动化】 2. Windows Python 解释器使用笔记