CN114489682B - nginx配置文件的操作方法、装置和设备 - Google Patents

nginx配置文件的操作方法、装置和设备 Download PDF

Info

Publication number
CN114489682B
CN114489682B CN202210387757.5A CN202210387757A CN114489682B CN 114489682 B CN114489682 B CN 114489682B CN 202210387757 A CN202210387757 A CN 202210387757A CN 114489682 B CN114489682 B CN 114489682B
Authority
CN
China
Prior art keywords
configuration data
analyzing
configuration file
rule
grammar rule
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202210387757.5A
Other languages
English (en)
Other versions
CN114489682A (zh
Inventor
易存道
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Baolande Software Co ltd
Original Assignee
Beijing Baolande Software Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baolande Software Co ltd filed Critical Beijing Baolande Software Co ltd
Priority to CN202210387757.5A priority Critical patent/CN114489682B/zh
Publication of CN114489682A publication Critical patent/CN114489682A/zh
Application granted granted Critical
Publication of CN114489682B publication Critical patent/CN114489682B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/42Syntactic analysis
    • G06F8/427Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种nginx配置文件的操作方法、装置和设备,该方法包括:获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作。本发明实施例的方法实现了对nginx配置文件的操作。

Description

nginx配置文件的操作方法、装置和设备
技术领域
本发明涉及计算机技术领域,尤其涉及一种nginx配置文件的操作方法、装置和设备。
背景技术
nginx是一款轻量级的互联网服务器/反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并发能力强。nginx配置文件是一种计算机文件,可以通过nginx配置文件的解析获取关键的参数,也可以通过nginx配置文件实现nginx关键参数的初始设置和修改。
现有技术中,通过提取nginx配置文件中的关键数据并用特殊字符占位以生成模板,当需要对nginx配置文件进行操作时,只能通过手动的方式进行模板的替换以实现对nginx配置文件的操作,生成模板和模板替换的过程中耗时较长,效率较低。
发明内容
针对现有技术中的问题,本发明实施例提供一种nginx配置文件的操作方法、装置和设备。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种nginx配置文件的操作方法,包括:
获取待操作的nginx配置文件;
根据预设规则,对所述配置文件进行解析,获取面向对象形式的配置数据;
根据所述面向对象形式的配置数据,对所述配置文件进行操作。
进一步地,所述预设规则包括词法规则和语法规则,所述根据预设规则,对所述配置文件进行解析,获取面向对象形式的配置数据,包括:
根据所述词法规则,对所述配置文件中字符串进行解析,得到单词序列形式的配置数据;
根据所述语法规则,对所述单词序列形式的配置数据进行解析,得到面向对象形式的目标类型的配置数据。
进一步地,所述目标类型包括,以下至少一项:
键值key-value类型、注释类型或语句块类型。
进一步地,所述语法规则,包括以下至少一项:
第一语法规则,用于解析配置文件中键值key-value类型的配置数据;
第二语法规则,用于解析配置文件中注释类型的配置数据;
第三语法规则,用于解析配置文件中的语句块类型的配置数据。
进一步地,根据所述语法规则,对所述单词序列形式的配置数据所对应的目标类型的配置数据进行解析,得到所述面向对象形式的配置数据,包括:
根据所述第一语法规则,生成用于解析所述键值key-value类型的类和/或函数;
根据所述键值key-value类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到所述面向对象形式的key-value类型的配置数据;和/或,
根据所述第二语法规则,生成用于解析所述注释类型的类和/或函数;
根据所述注释类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到所述面向对象形式的注释类型的配置数据;和/或,
根据所述第三语法规则,生成用于解析所述语句块类型的类和/或函数;
根据所述语句块类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到所述面向对象形式的语句块类型的配置数据。
进一步地,对所述面向对象形式的配置数据进行操作,获取面向对象形式的操作结果;
将所述面向对象形式的操作结果写入所述配置文件中。
第二方面,本发明实施例还提供了一种nginx配置文件的操作装置,包括:
获取模块,用于获取待操作的nginx配置文件;
解析模块,用于根据预设规则,对所述配置文件进行解析,获取面向对象形式的配置数据;
操作模块,用于根据所述面向对象形式的配置数据,对所述配置文件进行操作。
进一步地,所述解析模块,用于根据所述词法规则,对所述配置文件中字符串进行解析,得到单词序列形式的配置数据;
根据所述语法规则,对所述单词序列形式的配置数据进行解析,得到面向对象形式的目标类型的配置数据。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所述nginx配置文件的操作方法。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面所述nginx配置文件的操作方法。
第五方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第一方面所述nginx配置文件的操作方法。
本发明实施例提供的nginx配置文件的操作方法、装置和设备,通过获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作;即根据预设规则,将不规则的nginx配置文件中的配置数据,转换为面向对象形式的配置数据,通过对上述面向对象形式的配置数据进行调用,就可以高效地实现面向对象形式的配置数据的操作,也就实现了对不规则nginx配置文件的简便和高效地操作。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的nginx配置文件的操作方法的流程示意图;
图2是本发明实施例提供的nginx配置文件的语法规则的示意图;
图3是本发明实施例提供的nginx配置文件的操作方法的实施框架图;
图4是本发明实施例提供的nginx配置文件的操作方法的另一流程示意图;
图5是本发明实施例提供的nginx配置文件的操作装置的结构示意图;
图6是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的方法可以应用于nginx配置文件的操作场景中,实现对nginx配置文件的操作。
相关技术中,通过提取nginx配置文件中的关键数据并用特殊字符占位以生成模板,当需要对nginx配置文件进行操作时,只能通过手动的方式进行模板的替换以实现对nginx配置文件的操作,生成模板和模板替换的过程中耗时较长,效率较低。
本发明实施例的nginx配置文件的操作方法,通过获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作;即根据预设规则,将不规则的nginx配置文件中的配置数据,转换为面向对象形式的配置数据,通过对上述面向对象形式的配置数据进行调用,就可以高效地实现面向对象形式的配置数据的操作,也就实现了对不规则nginx配置文件的简便和高效地操作。
下面结合图1-图6以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明实施例提供的nginx配置文件的操作方法一实施例的流程示意图。如图1所示,本实施例提供的方法,包括:
步骤101、获取待操作的nginx配置文件;
具体的,nginx是一款轻量级的互联网服务器/反向代理服务器及电子邮件代理服务器,其特点是占有内存少,并发能力强。nginx配置文件是一种计算机文件,配置文件里存放着nginx程序启动时需要对程序进行配置的信息;因此为了进行日常维护工作,需要获取nginx配置文件,并对nginx配置文件中的配置数据进行初始化设置和配置更新。由于nginx的配置文件不是可扩展标记语言(Extensible Markup Language,XML)格式,也就是nginx的配置文件是不规则格式,导致nginx配置文件的解析和操作比较困难。为了提高日常维护工作的效率和准确性,需要提高nginx配置文件解析和操作的便利性和准确性。
步骤102、根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;
具体的,预设规则用于将不规则格式的配置文件转化为至少一种类型的面向对象形式的配置数据,进一步的,面向对象形式的配置数据可以方便的进行调用和修改;即通过预设规则,将不规则格式的nginx配置文件转化为面向对象形式的配置数据以完成不规则nginx配置文件的解析,再通过对上述面向对象形式的配置数据的调用,就可以实现面向对象形式的配置数据的解析和修改,也就实现了nginx配置文件的操作。
例如,配置文件中有键值key-value类型和条件语句块类型的配置数据,则可以将其分别转换为对应的键值类型的面向对象形式的配置数据和条件语句块类型的面向对象形式的配置数据。
步骤103、根据面向对象形式的配置数据,对配置文件进行操作。
具体的,根据面向对象形式的配置数据,对配置文件进行操作;即通过对面向对象形式的配置数据进行调用,实现对面向对象形式的配置数据的操作后,需要将其操作结果更新到配置文件中,以实现对配置文件的操作。当完成了配置文件的操作后,也就完成了相应的维护工作。
例如,将不规则的nginx配置文件中有关服务器端口的配置数据,通过预先设置的规则,将其转换为面向对象形式的键值类型的配置数据后,获得服务器端口为8080;当日常维护工作中需要将服务器端口修改为8888时,则可以调用该面向对象形式的键值类型的的配置数据,将该面向对象的配置数据中的服务器端口从8080修改为8888,并将其操作结果更新到配置文件中,也就实现了nginx配置文件中服务器端口的操作。
上述实施例的方法,通过获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作;即根据预设规则,将不规则的nginx配置文件中的配置数据,转换为面向对象形式的配置数据,通过对上述面向对象形式的配置数据进行调用,就可以高效地实现面向对象形式的配置数据的操作,也就实现了对不规则nginx配置文件的简便和高效地操作。
在一实施例中,预设规则包括词法规则和语法规则,根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据,包括:
根据词法规则,对配置文件中字符串进行解析,得到单词序列形式的配置数据;
根据语法规则,对单词序列形式的配置数据进行解析,得到面向对象形式的目标类型的配置数据。
具体的,预设规则可以以文件的形式保存,规则文件用以指示以什么样的规则去解析不规则的nginx配置文件,并且生成nginx配置文件对应的面向对象形式的配置数据。本实施例中,预设规则包括词法规则和语法规则,其中,词法规则用于将不规则的nginx配置文件中的字符串进行解析,得到单词序列形式的配置数据,即将配置文件中的字符串拆解为最小单位为单词的配置数据,词法规则可理解解析为匹配不包含空格的字符串;语法规则要以词法规则为基础,用于将最小单位为单词的配置数据转换为目标类型的面向对象形式的配置数据。
可选地,目标类型包括,以下至少一项:
键值key-value类型、注释类型或语句块类型。
其中,语句块类型包括以下至少一项:位置块头、一般块头、条件语句、易整合语言指令。
可选地,语法规则,包括以下至少一项:
第一语法规则,用于解析配置文件中键值key-value类型的配置数据;
第二语法规则,用于解析配置文件中注释类型的配置数据;
第三语法规则,用于解析配置文件中的语句块类型的配置数据。
具体的,根据第一语法规则,将不规则的nginx文件中的键值key-value类型的配置数据转化为面向对象形式的键值key-value类型的配置数据;根据第二语法规则,将不规则的nginx文件中的注释类型的配置数据转化为面向对象形式的注释类型的配置数据;根据第二语法规则,将不规则的nginx文件中的语句块类型的配置数据转化为面向对象形式的语句块类型的配置数据;然后通过分别调用面向对象形式的键值key-value类型的配置数据、面向对象形式的语句块类型的配置数据,就可以方便准确的实现面向对象形式的目标类型的配置数据的解析和操作。
例如,nginx的配置文件内容如下:
  user bes;
  worker_processes 4;
  http {
  map $request_uri $site_redirect {
  default no_match;
  ~*^/foo/
Figure 574670DEST_PATH_IMAGE001
$http://example.com/foo.html;
  ~^/(
Figure 686982DEST_PATH_IMAGE002
i)bar/
Figure 68154DEST_PATH_IMAGE003
$http://example.com/;
  ~^/(
Figure 390551DEST_PATH_IMAGE001
i)baz/
Figure 938207DEST_PATH_IMAGE001
$http://example.com/baz.html;
  }
  init_worker_by_lua_block {
  test;
  }
  server {
  #bind port infomation
  listen 8080;
  root /vagrant;
  rewrite ^/(.*) http://www.brian.com/$1 permanent;
  index index.html;
  server_name sandbox.vm;
  location /nginx_status {
  stub_status on;
  access_log off;
  }
  location /test {
  if ($request_method = POST) {
  param 0;
  }
  }
  location /luatest {
  init_worker_by_lua_block {
  test;
  }
  }
  }
  }
  示例性的,图2为本发明实施例的语法规则结构示意图:
其中,第一语法规则为声明statement规则,解析如下key-value[value]格式的配置数据:
  listen 8080;
  root /vagrant;
  rewrite ^/(.*) http://www.brian.com/$1 permanent;
  index index.html;
  server_name sandbox.vm;
可选地,重写语句RewriteStatement语法规则,为第一语法规则statement下使用的子规则,用来解析rewrite这个特殊配置,如:
  rewrite ^/(.*) http://www.brian.com/$1 permanent;
  可选地,一般陈述GenericStatement语法规则,为第一语法规则声明规则statement下使用的子规则,用于解析除了重写语句RewriteStatement语法规则以外的通用key value [value]配置,如:
  listen 8080;
  root /vagrant;
可选地,正则表达式RegexHeaderStatement语法规则,为第一语法规则statement下使用的子规则,解析以正则表达式开头的配置,如:
  ~*^/foo/
Figure 780392DEST_PATH_IMAGE001
$http://example.com/foo.html;
  ~^/(
Figure 20881DEST_PATH_IMAGE004
i)bar/
Figure 564994DEST_PATH_IMAGE001
$http://example.com/;
  ~^/(
Figure 916341DEST_PATH_IMAGE004
i)baz/
Figure 111568DEST_PATH_IMAGE005
$http://example.com/baz.html;
第二语法规则Comment语法规则:解析以#号开头的注释信息,示例如下:
  #bind port information;
  第三语法规则block语法规则,用于解析配置文件中的语句块类型的配置数据,即解析以value [value] {...}为格式括号括起来的配置信息,示例如下:
  map $request_uri $site_redirect {
  default no_match;
  ~*^/foo/
Figure 522958DEST_PATH_IMAGE005
$http://example.com/foo.html;
  ~^/(
Figure 554368DEST_PATH_IMAGE006
i)bar/
Figure 443826DEST_PATH_IMAGE007
$http://example.com/;
  ~^/(
Figure 260604DEST_PATH_IMAGE008
i)baz/
Figure 842895DEST_PATH_IMAGE008
$http://example.com/baz.html;
  }
  可选地,位置块头LocationBlockHeader语法规则,为第三语法规则block下使用的子规则,解析以location [value] {...}为格式括号开始前的配置信息,示例如下:
  location /nginx_status {
  可选地,一般块头genericBlockHeader语法规则,为第三语法规则block下使用的子规则,解析以value [value] {...}为格式括号开始前的配置信息,示例如下:
  map $request_uri $site_redirect {
  可选地,条件语句if_statement语法规则,为第三语法规则block下使用的子规则,解析以value [value] {...}为格式括号中if指令的配置信息,示例如下:
  location /test {
  if ($request_method = POST) {
  param 0;
  }
  }
  可选地,易整合语言指令(glue language,lua)lua_block语法规则为第三语法规则block下使用的子规则,解析以value [value] {...}为格式括号中lua指令的配置信息,示例如下:
  location /luatest {
  init_worker_by_lua_block {
  test;
  }
  示例性的,如图3所示的nginx配置文件的操作方法的实施框架图,nginx配置文件或nginx配置文件流,通过词法分析和语法分析后,解析得到面向对象形式的配置数据,即可以完整解析出nginx配置,在配置合并过程中不会丢失配置数据,且不需要依赖数据库进行模板替换,能以面向对象方式对配置数据进行管理,提高了配置数据操作的效率。
通过上述第一语法规则、第二语法规则、第三语法规则就可以准确地实现配置文件中键值key-value类型、注释类型和语句块类型配置数据的解析,即使用词法分析和语法分析,将对应的配置项解析为对象模型,提供给上层业务使用,从而可以提高操作配置文件的效率。
上述实施例的方法,根据词法规则,将配置文件中字符串拆解为最小单位为单词的配置数据;根据语法规则将最小单位为单词的配置数据转换为目标类型的面向对象形式的配置数据;进一步地,通过调用上述面向对象形式的配置数据,实现面向对象形式的配置数据的操作,操作简便,效率较高,从而提高了操作配置文件的效率。
在一实施例中,根据语法规则,对单词序列形式的配置数据所对应的目标类型的配置数据进行解析,得到面向对象形式的配置数据,包括:
根据第一语法规则,生成用于解析键值key-value类型的类和/或函数;和/或,
根据键值key-value类型的类和/或函数,对单词序列形式的配置数据进行解析,得到面向对象形式的key-value类型的配置数据;
根据第二语法规则,生成用于解析注释类型的类和/或函数;和/或,
根据注释类型的类和/或函数,对单词序列形式的配置数据进行解析,得到面向对象形式的注释类型的配置数据;
根据第三语法规则,生成用于解析语句块类型的类和/或函数;
根据语句块类型的类和/或函数,对单词序列形式的配置数据进行解析,得到面向对象形式的语句块类型的配置数据。
具体的,可以通过调用另一种语言识别工具(ANother Tool for LanguageRecognition,antlr4),使用antlr4提供的JAVA的类库,根据规则文件生成词法规则和语法规则对应的代码,以便于进行配置文件中目标类型数据的解析和上层应用的调用。即通过定义和生成全局nginx配置、语句块、注释块、条件语句块、持久化等接口类和/或函数,一方面,在解析到配置数据中目标类型的数据时,直接构建出对应的面向对象模型,另一方面是为了上层业务在调用时,能以面向对象形式方便对配置数据进行解析、查询、更新。
可选地,可以通过第一语法规则构建出用于解析键值key-value类型的类和/或函数,然后根据构建出的键值key-value类型的类和/或函数就可以得到面向对象形式的key-value类型的配置数据;通过第二语法规则构建出用于解析注释类型的类和/或函数,然后根据构建出的注释类型的类和/或函数就可以得到面向对象形式的注释类型的配置数据;通过第三语法规则构建出用于解析语句块类型的类和/或函数,然后根据构建出的语句块类型的类和/或函数就可以得到面向对象形式的语句块类型的配置数据。
上述实施例的方法,通过语法规则构建出用于解析目标类型的类和/或函数,然后根据构建出的目标类型的类和/或函数就可以得到面向对象形式的目标类型的配置数据;使得在在解析到配置数据中目标类型的数据时,直接构建出对应的面向对象模型,另一方面是为了上层业务在调用时,能以面向对象形式方便对配置数据进行解析、查询、更新,从而可以提高操作配置文件的效率。
在一实施例中,根据面向对象形式的配置数据,对配置文件进行操作,包括:
对面向对象形式的配置数据进行操作,获取面向对象形式的操作结果;
将面向对象形式的操作结果写入配置文件中。
具体的,根据词法规则和语法规则完成不规则的nginx配置文件的解析后,获得面向对象形式的目标类型的配置数据,也就可以以面向对象形式对配置数据进行操作,实现面向对象形式的配置数据的更改,并将面向对象形式的操作结果按照面向对象结构写入配置文件,即可实现不规则的nginx配置文件的操作。
上述实施例的方法,根据词法规则和语法规则将不规则的nginx配置文件解析为面向对象形式的目标类型的配置数据后,就可以通过以面向对象形式的方式,对nginx所对应的面向对象形式的目标类型的配置数据进行增删改查等操作,将面向对象形式的操作结果按照对象结构写入配置文件,从而可以提高操作配置文件的效率。
示例性的,如图4所示,nginx配置文件的操作方法如下:
(1)获取待操作的nginx配置文件
获取待操作的nginx配置文件或nginx配置文件流;可选地,可以定义nginx配置数据的接口和类,包括全局nginx配置、语句块、注释、条件语句块、持久化等接口的定义。定义这些接口类的作用,一方面是为了上层业务在调用时,能以面向对象形式方便对配置数据解析、查询、更新,另一方面在antlr4的规则文件中需要使用到这些接口,在解析到对应类型的数据时,直接构建出对应的面向对象的模型。
可选地,例如,获取待操作的配置文件的操作,可以通过从具体文件路径解析nginx配置的接口或从文件流解析nginx配置的接口实现,其中,从具体文件路径解析nginx配置的接口用于实现指定nginx配置文件具体路径,解析之后映射成配置对象;从文件流解析nginx配置的接口用于实现指定nginx配置文件流,解析之后映射成配置对象。
可选地,查找和解析配置文件中的语句块,可以通过查找条件语句块的接口,和/或,查找lua语句块的接口,和/或,查找基本配置语句块的接口,和/或,查找所有自定义类型的语句块的接口来实现,其中,查找条件语句块的接口用于实现从解析完成的配置对象中查找if条件语句块;查找lua语句块的接口用于实现从解析完成的配置对象中查找lua语句块;查找基本配置语句块的接口用于实现从解析完成的配置对象中查找key/value基本配置语句块;查找所有自定义类型的语句块的接口用于实现从解析完成的配置对象中查找自定义类型语句块,类型通过参数传入。
可选地,查找和解析配置文件中的注释语句,可以通过查找注释语句块的接口来实现,其中,查找注释语句块的接口用于实现从解析完成的配置对象中查找注释语句块。
(2)编写规则antlr4规则文件;
即编写词法规则和语法规则,定义针对nginx配置文件解析的antlr4规则文件,其中,词法规则用于对配置文件中字符串进行解析,得到单词序列形式的配置数据;语法规则用于对单词序列形式的配置数据进行解析,得到面向对象形式的目标类型的配置数据。
(3)调用antrl4规则文件,生成用于解析目标类型的类和/或函数;
根据规则文件生成nginx配置文件的词法解析器和语法解析器,即通过调用antrl4规则文件,生成用于解析目标类型的类和/或函数,实现监听器自动获取解析结果,最后业务模块即可以以面向对象方式调用定义的全局nginx配置类接口和持久化类接口解析和更新配置。可选的,根据antrl4规则文件中的第一语法规则,生成用于解析键值key-value类型的类和/或函数;根据第二语法规则,生成用于解析注释类型的类和/或函数;根据第三语法规则,生成用于解析语句块类型的类和/或函数。
可选地,第一语法规则声明statement规则在语法解析器中生成statement函数、声明上下文StatementContext内部类,且函数返回声明上下文StatementContext对象,其属性值为规则中全局配置对象。第一语法规则对应的声明statement函数根据条件分别调用重写语句RewriteStatement、一般陈述GenericStatement、正则表达式RegexHeaderStatement函数处理逻辑,各个函数处理结果对象直接赋值给声明上下文StatementContext对象。
一般陈述GenericStatement语法规则在语法解析器中生成一般陈述GenericStatement函数、一般陈述上下文GenericStatementContext内部类,且函数返回一般陈述上下文GenericStatementContext对象,其属性值为规则中全局配置对象。
一般陈述GenericStatement函数根据条件分别处理各个字符串值,各个分支处理结果直接调用增加值addvalue接口添加到集合中,重写语句RewriteStatement、正则表达式RegexHeaderStatement和上述处理过程类似,此处不再叙述。
语句块语法block规则在语法解析器中生成语句块block函数、语句块上下文BlockContext内部类,且函数返回语句块上下文BlockContext对象,其属性值为规则中规则中全局配置对象。
语句块block函数根据条件分别调用位置块头LocationBlockHeader、一般块头GenericBlockHeader、声明Statement、块头Block、条件语句If_Statement、注释函数Comment处理逻辑,各个分支处理结果直接调用接口添加到对象中。
全局配置Config规则最终在语法解析器中生成Config函数、上下文位置ConfigContext内部类,且函数返回上下文配置ConfigContext对象,其属性值为规则中全局配置对象。全局配置config函数根据条件分别调用声明statement、语句块block、注释Comment函数处理逻辑,各个函数处理结果对象添加给负荷均衡参数LoadBalanceConfig对象中。
(4)全局nginx配置接口中调用词法和语法规则中生成用于解析目标类型的类和/或函数;
全局nginx配置接口中调用生成的词法分析器和语法分析器接口,即全局nginx配置接口中调用词法和语法规则中生成用于解析目标类型的类和/或函数,完成nginx配置文件的解析,并以面向对象形式返回给上层业务。
(5)业务中调用全局配置类完成配置数据的增删改查;
上层业务可通过全局配置解析接口对nginx中某项配置进行增删改查,即以面向对象的方式,实现对nginx所对应的面向对象形式的目标类型的配置数据进行增删改查等操作。(6)业务中调用持久化接口将操作结果写入nginx配置文件;
即对nginx所对应的面向对象形式的目标类型的配置数据进行增删改查等操作,将面向对象形式的操作结果按照对象结构写入nginx配置文件,即可以方便、准确地实现不规则的nginx配置文件的操作。
下面对本发明提供的nginx配置文件的操作装置进行描述,下文描述的nginx配置文件的操作装置与上文描述的nginx配置文件的操作方法可相互对应参照。
图5是本发明提供的nginx配置文件的操作装置的结构示意图。本实施例提供的nginx配置文件的操作装置,包括:
获取模块710,用于获取待操作的nginx配置文件;
解析模块720,用于根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;
操作模块730,用于根据面向对象形式的配置数据,对配置文件进行操作。
可选地,所述解析模块720,具体用于:根据词法规则,对配置文件中字符串进行解析,得到单词序列形式的配置数据;
根据语法规则,对单词序列形式的配置数据进行解析,得到面向对象形式的目标类型的配置数据。
可选地,目标类型包括,以下至少一项:
键值key-value类型、注释类型或语句块类型。
可选地,语法规则,包括以下至少一项:
第一语法规则,用于解析配置文件中键值key-value类型的配置数据;
第二语法规则,用于解析配置文件中注释类型的配置数据;
第三语法规则,用于解析配置文件中的语句块类型的配置数据。
可选地,所述解析模块720,具体用于:根据第一语法规则,生成用于解析键值key-value类型的类和/或函数;
根据键值key-value类型的类和/或函数,对单词序列形式的配置数据进行解析,得到面向对象形式的key-value类型的配置数据;和/或,
根据第二语法规则,生成用于解析注释类型的类和/或函数;
根据注释类型的类和/或函数,对单词序列形式的配置数据进行解析,得到面向对象形式的注释类型的配置数据;和/或,
根据第三语法规则,生成用于解析语句块类型的类和/或函数;
根据语句块类型的类和/或函数,对单词序列形式的配置数据进行解析,得到面向对象形式的语句块类型的配置数据。
可选地,所述操作模块730,具体用于:对面向对象形式的配置数据进行操作,获取面向对象形式的操作结果;
将面向对象形式的操作结果写入配置文件中。
本发明实施例的装置,其用于执行前述任一方法实施例中的方法,其实现原理和技术效果类似,此次不再赘述。
图6示例了一种电子设备的实体结构示意图,该电子设备可以包括:处理器(processor)810、通信接口(Communications Interface)820、存储器(memory)830和通信总线840,其中,处理器810,通信接口820,存储器830通过通信总线840完成相互间的通信。处理器810可以调用存储器830中的逻辑指令,以执行nginx配置文件的操作方法,该方法包括:获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作。
此外,上述的存储器830中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的nginx配置文件的操作方法,该方法包括:获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的nginx配置文件的操作方法,该方法包括:获取待操作的nginx配置文件;根据预设规则,对配置文件进行解析,获取面向对象形式的配置数据;根据面向对象形式的配置数据,对配置文件进行操作。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (4)

1.一种nginx配置文件的操作方法,其特征在于,包括:
获取待操作的nginx配置文件;
根据预设规则,对所述配置文件进行解析,获取面向对象形式的配置数据;
所述预设规则包括词法规则和语法规则,所述语法规则,包括以下至少一项:第一语法规则,用于解析配置文件中键值key-value类型的配置数据;第二语法规则,用于解析配置文件中注释类型的配置数据;
第三语法规则,用于解析配置文件中的语句块类型的配置数据;
所述根据预设规则,对所述配置文件进行解析,获取面向对象形式的配置数据,包括:
根据所述词法规则,对所述配置文件中字符串进行解析,得到单词序列形式的配置数据;
根据所述第一语法规则,生成用于解析所述键值key-value类型的类和/或函数;
根据所述键值key-value类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到面向对象形式的key-value类型的配置数据;和/或,
根据所述第二语法规则,生成用于解析所述注释类型的类和/或函数;
根据所述注释类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到面向对象形式的注释类型的配置数据;和/或,
根据所述第三语法规则,生成用于解析所述语句块类型的类和/或函数;
根据所述语句块类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到面向对象形式的语句块类型的配置数据;所述第三语法规则包括以下至少一项:第三语法规则的位置块头子语法规则、第三语法规则的一般块头子语法规则、第三语法规则的条件语句子语法规则、第三语法规则的易整合语言指令子语法规则;
对面向对象形式的配置数据进行操作,获取面向对象形式的操作结果;
将所述面向对象形式的操作结果写入所述配置文件中。
2.一种nginx配置文件的操作装置,其特征在于,包括:
获取模块,用于获取待操作的nginx配置文件;
解析模块,用于根据预设规则,对所述配置文件进行解析,获取面向对象形式的配置数据;所述预设规则包括词法规则和语法规则,所述语法规则,包括以下至少一项:第一语法规则,用于解析配置文件中键值key-value类型的配置数据;第二语法规则,用于解析配置文件中注释类型的配置数据;第三语法规则,用于解析配置文件中的语句块类型的配置数据;
解析模块用于根据所述词法规则,对所述配置文件中字符串进行解析,得到单词序列形式的配置数据;
根据所述第一语法规则,生成用于解析所述键值key-value类型的类和/或函数;
根据所述键值key-value类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到面向对象形式的key-value类型的配置数据;和/或,
根据所述第二语法规则,生成用于解析所述注释类型的类和/或函数;
根据所述注释类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到面向对象形式的注释类型的配置数据;和/或,
根据所述第三语法规则,生成用于解析所述语句块类型的类和/或函数;
根据所述语句块类型的类和/或函数,对所述单词序列形式的配置数据进行解析,得到面向对象形式的语句块类型的配置数据;所述第三语法规则包括以下至少一项:第三语法规则的位置块头子语法规则、第三语法规则的一般块头子语法规则、第三语法规则的条件语句子语法规则、第三语法规则的易整合语言指令子语法规则;
操作模块,用于对面向对象形式的配置数据进行操作,获取面向对象形式的操作结果;将所述面向对象形式的操作结果写入所述配置文件中。
3.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1所述的nginx配置文件的操作方法。
4.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1所述的nginx配置文件的操作方法。
CN202210387757.5A 2022-04-14 2022-04-14 nginx配置文件的操作方法、装置和设备 Active CN114489682B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210387757.5A CN114489682B (zh) 2022-04-14 2022-04-14 nginx配置文件的操作方法、装置和设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210387757.5A CN114489682B (zh) 2022-04-14 2022-04-14 nginx配置文件的操作方法、装置和设备

Publications (2)

Publication Number Publication Date
CN114489682A CN114489682A (zh) 2022-05-13
CN114489682B true CN114489682B (zh) 2022-08-02

Family

ID=81488667

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210387757.5A Active CN114489682B (zh) 2022-04-14 2022-04-14 nginx配置文件的操作方法、装置和设备

Country Status (1)

Country Link
CN (1) CN114489682B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8631386B2 (en) * 2004-08-25 2014-01-14 Mohit Doshi System and method for automating the development of web services
US9888092B2 (en) * 2008-04-28 2018-02-06 Oracle International Corporation System and method for executing third party module with web servers
CN101826017B (zh) * 2010-05-14 2012-11-28 西安交通大学 一种面向粒的编程集成开发系统
CN103677952B (zh) * 2013-12-18 2018-05-11 华为技术有限公司 编解码器生成装置及方法

Also Published As

Publication number Publication date
CN114489682A (zh) 2022-05-13

Similar Documents

Publication Publication Date Title
US8447744B2 (en) Extensibility platform using data cartridges
US8091071B2 (en) Method and system for template-based code generation
CN109522018B (zh) 页面处理方法、装置及存储介质
US9430494B2 (en) Spatial data cartridge for event processing systems
US10162613B1 (en) Re-usable rule parser for different runtime engines
Cánovas Izquierdo et al. Extracting models from source code in software modernization
US20110196891A1 (en) Class loading using java data cartridges
CN112235311B (zh) Ovsdb客户端代码自动生成方法、系统、设备及介质
CN111950239B (zh) Schema文档生成方法、装置、计算机设备和介质
US11586839B2 (en) Code completion of method parameters with machine learning
CN115016793A (zh) 基于语法树的代码生成方法和装置、电子设备、存储介质
CN116028028B (zh) 请求函数生成方法、装置、设备及存储介质
CN115344932A (zh) 一种模型数据的规则审查方法、装置及电子设备
CN114064601A (zh) 存储过程转换方法、装置、设备和存储介质
CN113608748B (zh) C语言转换Java语言的数据处理方法、装置及设备
CN113204593A (zh) 一种基于大数据计算引擎的etl作业开发系统和计算机设备
CN114764558A (zh) 一种sql方言转换方法、装置、系统及存储介质
CN110928535B (zh) 衍生变量部署方法、装置、设备及可读存储介质
CN114489682B (zh) nginx配置文件的操作方法、装置和设备
JP2879099B1 (ja) 抽象構文木処理方法、抽象構文木処理プログラムを記録したコンピュータ読み取り可能な記録媒体、抽象構文木データを記録したコンピュータ読み取り可能な記録媒体、及び、抽象構文木処理装置
US20100037202A1 (en) Generation of graphical editors through meta model enrichment
CN112799638B (zh) 无侵入式快速开发方法、平台、终端及存储介质
CN110058858B (zh) 一种json数据处理方法及装置
Kosanović et al. Applang–A DSL for specification of mobile applications for android platform based on textX
CN114003317B (zh) 内联实现方法及装置、电子设备、存储介质及程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant