如何快速批量修改多个nginx配置?

Bash

1 前言

一个问题,一篇文章,一出故事。
笔者最近需要快速地修改一堆nginx的配置文件,详细的需求是把一个配置文件快速地拆分为两个配置文件。
于是想到使用匹配关键字、然后替换的方法。
总的来说,以后不用挨个修改配置文件,感觉总结此文比较有价值。O(∩_∩)O哈哈~

2 最佳实践

2.1 提前备份配置文件

tar -cvf /data/backup/nginx_conf.tar.bz2 /etc/nginx/

2.2 测试替换命令的作用范围

sourceSring="include /etc/nginx/public/header_safety.conf;"
cd /etc/nginx/
for i in `grep -R "$sourceSring" | cut -d":" -f1`; do
	echo $i
done

注:关键字为变量“sourceSring”定义的字符串

2.3 执行替换操作

sourceSring="include /etc/nginx/public/header_safety.conf;"
targetString="include /etc/nginx/public/header_HSTS.conf;\n    include /etc/nginx/public/header_X-Frame-Options.conf;"

cd /etc/nginx/
for i in `grep -R "$sourceSring" | cut -d":" -f1`; do
	sed -i "s~$sourceSring~$targetString~g" $i
done

需要注意的是,
– 以上把变量“sourceSring”定义的字符串替换为变量“targetString”的字符串
– 变量“targetString”字符串使用“\n”换行

2.4 确认执行

cd /etc/nginx/
grep -R "include /etc/nginx/public/header_HSTS.conf;"
grep -R "include /etc/nginx/public/header_X-Frame-Options.conf;"

2.5 禁用配置

sourceSring="include /etc/nginx/public/header_HSTS.conf;"
targetString="#include /etc/nginx/public/header_HSTS.conf;"
cd /etc/nginx/
for i in `grep -R "$sourceSring" | cut -d":" -f1`; do
	sed -i "s~$sourceSring~$targetString~g" $i
done

sourceSring="include /etc/nginx/public/header_X-Frame-Options.conf;"
targetString="#include /etc/nginx/public/header_X-Frame-Options.conf;"
cd /etc/nginx/
for i in `grep -R "$sourceSring" | cut -d":" -f1`; do
	sed -i "s~$sourceSring~$targetString~g" $i
done
没有评论

发表回复

Nginx
如何解决https请求不安全http页被阻止问题?

1 前言 一个问题,一篇文章,一出故事。 笔者最近代理公司应用,发现https的页面有请求不安全的h …

Nginx
如何Nginx代理上游的子项目或文件夹?

1 前言 一个问题,一篇文章,一出故事。 笔者接到任务需要把Tomcat的其中一个应用号使用Ngin …

Bash
如何实现文件夹路径转纯数字符串?

1 前言 一个问题,一篇文章,一出故事。 由于由于需要设置某目录的配额,配额要求为每个目录指定一个项 …