请教大佬怎么修改nginx配置文件

76次阅读

共计 1324 个字符,预计需要花费 4 分钟才能阅读完成。

  1.         location / {
  2.                 proxy_pass $upstream;
  3.                 #test#
  4.         }

复制代码

目前想到的增加内容只能通过这种 #test# 自定义关键字替换,删除没有关键字怎么办,记录所有替换操作在数据库吗?那操作多的时候数据库岂不是要炸,关键字可能会误伤到其他无关设置

记录行数吗?也只能对现有已配置文件记录,增加内容之后要删除的话依旧要找删哪个内容,内容在哪个行

还有提取中间文本,但是 location /xxxx 这个 xxxx 就没法获取了

想了一下午了,实在没头绪,求脚本大佬或者有经验的大佬教教,逛了 github 找到一个 python-nginx 解析器,但是没有文档

网友回复:

注册 没看明白,你是想在自己后台系统修改 nginx 配置吗?

Backkom 是的,想实现对 conf 文件的增删改查操作,类型 cdnfly 添加删除缓存之类

iiss 自己写解析规则?

Backkom 那就真的造轮子了,loc 大佬众多想请教大佬看看有没有更简单的方法,之前询问一个脚本大佬他是通过行数修改的,详细没问,可惜了

Faxlok https://github.com/odiszapc/nginx-java-parser

Backkom 建议不要做解析规则 工作量太大了 数据库存再通过注释定位复写数据好一点 还有手动修改的余地

iiss 谢谢大佬,这个可能没有对使用 include /home/vhost/*.conf; 这种引用其他配置文件支持,我这边运行直接报空指针错误。[code]                listen 80;                 listen [::]:80; 复制代码 [/code] 监听 ipv4 和 ipv6 这个也不支持,我使用里面的 getvalues 方法只输出了一个 [80]

hang6 这个确实可以实现增删操作但是改的话还是要对相应的规则解析,然后替换,虽然简单了很多但是用户变多操作变多之后数据表上万我感觉很轻松,后续需要单独对数据库进行优化 而且如果不是 location 区块修改,是对 server 修改的话我不知道设置放在底部 会不会生效,稍等我去测试,如果不生效的话实现起来就需要搭配 sql 语句来计算行数偏移,cpu 应该很难顶

Backkom 你自己自己找找第三方的库,肯定有的,这种需求不是非常个性化,总有合适你的库。实在没找到可以自己写个解析,当成个 yml 文件操作就好了

注册 你想复杂了 只需要通过注释分区 每次操作重新生成分区块内容整块换掉即可 根本不需要解析 这块内容操作也不会有什么负担 大量修改频繁操作只需要担心 nginx 的 reload 会不会使服务出问题 这个也好解决 做个队列几分钟统一取再刷一次数据就好

注册 了解了,注释分区,提前定义分区下多少行是什么数据,那一些操作我需要记录在数据库里,防止修改空数据。。又要改数据库了。。

hang6 这个场景一般是用 lua 来实现。

Backkom 大佬细说

zc_cz openresty,直接写 lua 加逻辑实现动态处理。这种方案避免了 reload。如果是 nginx 的 reload 方案,一般都是 conf 模板文件,就是固定位置注释直接替换,数据库存动态增添的规则。然后每次变更数据库数据结合模板直接覆盖,不需要考虑解释问题。

正文完
 0