CN112506585B - 一种基于Java动态改变Nginx配置的系统及方法 - Google Patents

一种基于Java动态改变Nginx配置的系统及方法 Download PDF

Info

Publication number
CN112506585B
CN112506585B CN202011589060.3A CN202011589060A CN112506585B CN 112506585 B CN112506585 B CN 112506585B CN 202011589060 A CN202011589060 A CN 202011589060A CN 112506585 B CN112506585 B CN 112506585B
Authority
CN
China
Prior art keywords
nginx
configuration
java
java application
configuration file
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
CN202011589060.3A
Other languages
English (en)
Other versions
CN112506585A (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.)
Inspur Cloud Information Technology Co Ltd
Original Assignee
Inspur Cloud Information Technology 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 Inspur Cloud Information Technology Co Ltd filed Critical Inspur Cloud Information Technology Co Ltd
Priority to CN202011589060.3A priority Critical patent/CN112506585B/zh
Publication of CN112506585A publication Critical patent/CN112506585A/zh
Application granted granted Critical
Publication of CN112506585B publication Critical patent/CN112506585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本发明公开一种基于Java动态改变Nginx配置的系统及方法,涉及软件开发技术领域,其实现内容为:Java应用模块,用于提供Restful形式的API接口,用于读取Nginx的配置信息,并基于读取的配置信息生成Nginx的配置文件;Nginx配置模块,用于配置Java应用模块生成的配置文件;数据存储模块,用于持久化存储Nginx的配置信息;定时任务模块,内置于Java应用模块,用于定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx的热加载命令,使得配置文件生效。本发明通过对Nginx配置的新增、删除以及动态刷新,以较小的延时热加载Nginx的配置,使Nginx配置自动生效,避免手动进入Nginx配置文件修改,使得Nginx配置更加简单、有效、便捷。

Description

一种基于Java动态改变Nginx配置的系统及方法
技术领域
本发明涉及Nginx配置文件,具体的说是一种基于Java动态改变Nginx配置的系统及方法。
背景技术
Java是一种广泛使用的计算机编程语言,拥有跨平台、面向对象、泛型编程的特性,广泛应用于企业级Web应用开发和移动应用开发。
Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行。
Nginx官方没有提供可以动态改变配置的API接口,目前修改的方式,大多是手动修改Nginx的配置文件,然后使用热加载命令(Nginx–s reload)进行配置刷新。此种方式需要进入到Nginx所在服务器才能进行修改,存在安全隐患;用户体验不够优雅,开发学习成本极大。
发明内容
本发明针对目前技术发展的需求和不足之处,提供一种基于Java动态改变Nginx配置的系统及方法。
首先,本发明公开一种基于Java动态改变Nginx配置的系统,解决上述技术问题采用的技术方案如下:
一种基于Java动态改变Nginx配置的系统,其包括:
Java应用模块,用于提供Restful形式的API接口,用于读取Nginx的配置信息,并基于读取的配置信息生成Nginx的配置文件;
Nginx配置模块,用于配置Java应用模块生成的配置文件;
数据存储模块,用于持久化存储Nginx的配置信息;
定时任务模块,内置于Java应用模块,用于定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx的热加载命令,使得配置文件生效。
进一步的,所涉及API接口具有新增Nginx配置、删除Nginx配置、手动加载Nginx配置的功能。
更进一步的,所涉及新增Nginx配置的接口包含如下内容:协议、目的IP端口以及自定义配置,Java应用会将API接口内容持久化至数据存储模块,新增成功后,会返回相应信息,并返回唯一标志ID,供删除使用,如有异常或者格式检验不过,Java应用所在的系统会抛出相应错误信息,请求报文体。
更进一步的,所涉及删除Nginx配置的接口用于调用接口,删除已经废弃的或者不在使用的Nginx配置,删除的筛选条件是唯一标志ID。
更进一步的,所涉及手动加载Nginx配置的接口针对修改后的Nginx配置,使其直接生效,无需等待。
优选的,所涉及Java应用模块将生成的配置文件统一存放在Nginx的配置文件目录下,配置文件的格式为.conf或者.stream。
更进一步的,所涉及数据存储模块引入MySQL或Redis作为分布式锁;
数据存储模块使用分布式锁来记录Nginx配置改变的时间,在Nginx配置改变时,数据存储模块保存Nginx配置的改变内容以及Nginx配置改变的时间;
调用Java应用所在系统的命令去执行Nginx的热加载命令,都会更新Nginx配置时间,每次文件改变都更新配置文件变更时间,然后对这两个时间进行比较,如果Nginx配置时间大于文件变更时间,则要进行Nginx配置热加载,否则无需改变。
其次,本发明公开一种基于Java动态改变Nginx配置的方法,解决上述技术问题采用的技术方案如下:
一种基于Java动态改变Nginx配置的方法,其实现过程包括:
数据库持久化存储Nginx的配置信息;
Java应用从数据库读取Nginx的配置信息,生成Nginx的配置文件,并统一存放在Nginx的配置文件目录下;
Nginx应用读取并配置Nginx的配置文件;
Java应用提供Restful形式的API接口,通过API接口可以访问外部应用;
Java应用内置定时任务,以定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx的热加载命令,使得配置文件生效。
进一步的,所涉及Java应用提供的API接口具有新增Nginx配置、删除Nginx配置、手动加载Nginx配置的功能;
新增Nginx配置的接口包含如下内容:协议、目的IP端口以及自定义配置,Java应用会将API接口内容持久化至数据存储模块,新增成功后,会返回相应信息,并返回唯一标志ID,供删除使用,如有异常或者格式检验不过,Java应用所在的系统会抛出相应错误信息,请求报文体;
删除Nginx配置的接口用于调用接口,删除已经废弃的或者不在使用的Nginx配置,删除的筛选条件是唯一标志ID;
手动加载Nginx配置的接口针对修改后的Nginx配置,使其直接生效,无需等待。
优选的,所涉及配置文件的格式为.conf或者.stream,统一存放在Nginx的配置文件目录下。
本发明的一种基于Java动态改变Nginx配置的系统及方法,与现有技术相比具有的有益效果是:
本发明可以对Nginx配置的新增、删除以及动态刷新,还可以通过较小的延时热加载Nginx的配置,使Nginx配置自动生效,避免手动进入Nginx配置文件修改,使得Nginx配置更加简单、有效、便捷。
附图说明
附图1是本发明实施例一的连接框图;
附图2是本发明实施例二的流程示意图。
附图中各标号信息表示:
1、Java应用模块,2、Nginx配置模块,3、数据存储模块,4、定时任务模块。
具体实施方式
为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
实施例一:
结合附图1,本实施例提出一种基于Java动态改变Nginx配置的系统,其包括:
Java应用模块1,用于提供Restful形式的API接口,用于读取Nginx的配置信息,并基于读取的配置信息生成Nginx的配置文件,生成的配置文件统一存放在Nginx的配置文件目录下,配置文件的格式为.conf或者.stream;
Nginx配置模块2,用于配置Java应用模块1生成的配置文件;
数据存储模块3,用于持久化存储Nginx的配置信息;
定时任务模块4,内置于Java应用模块1,用于定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx的热加载命令,使得配置文件生效。
本实施例中,API接口具有新增Nginx配置、删除Nginx配置、手动加载Nginx配置的功能。
新增Nginx配置的接口包含如下内容:协议、目的IP端口以及自定义配置,Java应用会将API接口内容持久化至数据存储模块,新增成功后,会返回相应信息,并返回唯一标志ID,供删除使用,如有异常或者格式检验不过,Java应用所在的系统会抛出相应错误信息,请求报文体。
删除Nginx配置的接口用于调用接口,删除已经废弃的或者不在使用的Nginx配置,删除的筛选条件是唯一标志ID。
手动加载Nginx配置的接口针对修改后的Nginx配置,使其直接生效,无需等待。
本实施例中,数据存储模块3引入MySQL或Redis作为分布式锁;
数据存储模块3使用分布式锁来记录Nginx配置改变的时间,在Nginx配置改变时,数据存储模块3保存Nginx配置的改变内容以及Nginx配置改变的时间;
调用Java应用所在系统的命令去执行Nginx的热加载命令,都会更新Nginx配置时间,每次文件改变都更新配置文件变更时间,然后对这两个时间进行比较,如果Nginx配置时间大于文件变更时间,则要进行Nginx配置热加载,否则无需改变。
实施例二:
结合附图2,本实施例提出一种基于Java动态改变Nginx配置的方法,其实现过程包括:
数据库持久化存储Nginx的配置信息;
Java应用从数据库读取Nginx的配置信息,生成格式为.conf或者.stream的Nginx配置文件,并统一存放在Nginx的配置文件目录下;
Nginx应用读取并配置Nginx的配置文件;
Java应用提供Restful形式的API接口,通过API接口可以访问外部应用;
Java应用内置定时任务,以定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx的热加载命令,使得配置文件生效。
本实施例中,Java应用提供的API接口具有新增Nginx配置、删除Nginx配置、手动加载Nginx配置的功能。
新增Nginx配置的接口包含如下内容:协议、目的IP端口以及自定义配置,Java应用会将API接口内容持久化至数据存储模块,新增成功后,会返回相应信息,并返回唯一标志ID,供删除使用,如有异常或者格式检验不过,Java应用所在的系统会抛出相应错误信息,请求报文体。
删除Nginx配置的接口用于调用接口,删除已经废弃的或者不在使用的Nginx配置,删除的筛选条件是唯一标志ID。
手动加载Nginx配置的接口针对修改后的Nginx配置,使其直接生效,无需等待。
综上可知,采用本发明的一种基于Java动态改变Nginx配置的系统及方法,通过对Nginx配置的新增、删除以及动态刷新,以较小的延时热加载Nginx的配置,使Nginx配置自动生效,避免手动进入Nginx配置文件修改,使得Nginx配置更加简单、有效、便捷。
以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

Claims (10)

1.一种基于Java动态改变Nginx配置的系统,其特征在于,其包括:
Java应用模块,用于提供Restful 形式的API接口,用于读取Nginx的配置信息,并基于读取的配置信息生成Nginx的配置文件;
Nginx 配置模块,用于配置Java应用模块生成的配置文件;
数据存储模块,用于引入MySQL或Redis作为分布式锁,来记录Nginx配置改变的时间,在Nginx配置改变时,数据存储模块保存Nginx配置的改变内容以及Nginx配置改变的时间;
定时任务模块,内置于Java应用模块,用于定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx 的热加载命令,使得配置文件生效。
2.根据权利要求1所述的一种基于Java动态改变Nginx配置的系统,其特征在于,所述API接口具有新增Nginx配置、删除Nginx配置、手动加载Nginx配置的功能。
3.根据权利要求2所述的一种基于Java动态改变Nginx配置的系统,其特征在于,新增Nginx配置的接口包含如下内容:协议、目的IP端口以及自定义配置,Java应用会将API接口内容持久化至数据存储模块,新增成功后,会返回相应信息,并返回唯一标志ID,供删除使用,如有异常或者格式检验不过,Java应用所在的系统会抛出相应错误信息,请求报文体。
4.根据权利要求3所述的一种基于Java动态改变Nginx配置的系统,其特征在于,删除Nginx配置的接口用于调用接口,删除已经废弃的或者不在使用的Nginx配置,删除的筛选条件是唯一标志ID。
5.根据权利要求4所述的一种基于Java动态改变Nginx配置的系统,其特征在于,手动加载Nginx配置的接口针对修改后的Nginx配置,使其直接生效,无需等待。
6.根据权利要求1所述的一种基于Java动态改变Nginx配置的系统,其特征在于,所述Java应用模块将生成的配置文件统一存放在Nginx的配置文件目录下,配置文件的格式为.conf 或者.stream。
7.根据权利要求1所述的一种基于Java动态改变Nginx配置的系统,其特征在于,调用Java应用所在系统的命令去执行Nginx 的热加载命令,都会更新Nginx配置时间,每次文件改变都更新配置文件变更时间,然后对这两个时间进行比较,如果Nginx配置时间大于文件变更时间,则要进行Nginx配置热加载,否则无需改变。
8.一种基于Java动态改变Nginx配置的方法,其特征在于,其实现过程包括:
数据库持久化存储Nginx的配置信息;
Java应用从数据库读取Nginx的配置信息,生成Nginx的配置文件,并统一存放在Nginx的配置文件目录下;
Nginx应用读取并配置Nginx的配置文件;
Java应用提供Restful 形式的API接口,通过API接口可以访问外部应用;
Java应用内置定时任务,以定时扫描Nginx的配置文件,并轮询检测Nginx配置文件是否发生变化,若发生变化,调用Java应用所在系统的命令去执行Nginx 的热加载命令,使得配置文件生效。
9.根据权利要求8所述的一种基于Java动态改变Nginx配置的方法,其特征在于,所述Java应用提供的API接口具有新增Nginx配置、删除Nginx配置、手动加载Nginx配置的功能;
新增Nginx配置的接口包含如下内容:协议、目的IP端口以及自定义配置,Java应用会将API接口内容持久化至数据存储模块,新增成功后,会返回相应信息,并返回唯一标志ID,供删除使用,如有异常或者格式检验不过,Java应用所在的系统会抛出相应错误信息,请求报文体;
删除Nginx配置的接口用于调用接口,删除已经废弃的或者不在使用的Nginx配置,删除的筛选条件是唯一标志ID;
手动加载Nginx配置的接口针对修改后的Nginx配置,使其直接生效,无需等待。
10.根据权利要求8所述的一种基于Java动态改变Nginx配置的方法,其特征在于,所述配置文件的格式为.conf 或者.stream,统一存放在Nginx的配置文件目录下。
CN202011589060.3A 2020-12-28 2020-12-28 一种基于Java动态改变Nginx配置的系统及方法 Active CN112506585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011589060.3A CN112506585B (zh) 2020-12-28 2020-12-28 一种基于Java动态改变Nginx配置的系统及方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011589060.3A CN112506585B (zh) 2020-12-28 2020-12-28 一种基于Java动态改变Nginx配置的系统及方法

Publications (2)

Publication Number Publication Date
CN112506585A CN112506585A (zh) 2021-03-16
CN112506585B true CN112506585B (zh) 2023-07-25

Family

ID=74951945

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011589060.3A Active CN112506585B (zh) 2020-12-28 2020-12-28 一种基于Java动态改变Nginx配置的系统及方法

Country Status (1)

Country Link
CN (1) CN112506585B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115174369A (zh) * 2021-04-02 2022-10-11 深圳市锐速云计算有限公司 基于nginx的网络节点集群调度与自动化部署方法及系统
CN114327606B (zh) * 2022-03-11 2022-07-05 武汉中科通达高新技术股份有限公司 配置管理方法、装置、电子设备及计算机可读存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468226A (zh) * 2014-12-18 2015-03-25 山东中创软件工程股份有限公司 基于Nginx的配置方法及装置
CN109347675A (zh) * 2018-10-31 2019-02-15 新华三大数据技术有限公司 服务器配置方法、装置以及电子设备
CN109450708A (zh) * 2018-12-14 2019-03-08 北京明朝万达科技股份有限公司 一种Nginx动态配置方法及系统
CN110941588A (zh) * 2018-09-21 2020-03-31 北京国双科技有限公司 文件的配置方法及装置
CN111045721A (zh) * 2019-10-29 2020-04-21 平安科技(深圳)有限公司 动态修改Nginx配置参数的方法、装置及存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9787760B2 (en) * 2013-09-24 2017-10-10 Chad Folkening Platform for building virtual entities using equity systems

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104468226A (zh) * 2014-12-18 2015-03-25 山东中创软件工程股份有限公司 基于Nginx的配置方法及装置
CN110941588A (zh) * 2018-09-21 2020-03-31 北京国双科技有限公司 文件的配置方法及装置
CN109347675A (zh) * 2018-10-31 2019-02-15 新华三大数据技术有限公司 服务器配置方法、装置以及电子设备
CN109450708A (zh) * 2018-12-14 2019-03-08 北京明朝万达科技股份有限公司 一种Nginx动态配置方法及系统
CN111045721A (zh) * 2019-10-29 2020-04-21 平安科技(深圳)有限公司 动态修改Nginx配置参数的方法、装置及存储介质

Also Published As

Publication number Publication date
CN112506585A (zh) 2021-03-16

Similar Documents

Publication Publication Date Title
CN112506585B (zh) 一种基于Java动态改变Nginx配置的系统及方法
US11416676B2 (en) Using text messages to interact with spreadsheets
KR101224721B1 (ko) 컨텍스트-인식 플랫폼을 위한 시스템 및 방법
KR102193489B1 (ko) 엔트리들을 위한 옵트-인 영속성을 갖는 메시지 스레드를 유지하는 장치 및 방법
KR101238574B1 (ko) 수정가능 문서를 다수의 클라이언트들과 동기화시키는방법, 시스템 및 컴퓨터 판독가능 매체
JP6266588B2 (ja) ローカル・データーおよびリモート・データーの同期
US8161107B2 (en) Roaming personal information items across multiple computing devices using an IMAP server
US10375149B2 (en) Application registration and interaction
CN108255513A (zh) 电子装置、基于springmvc的数据接口及其说明自动生成方法及存储介质
CN111240807B (zh) 一种卷启动的虚拟机重建方法、终端及可读存储介质
CN108536544A (zh) 基于数据库消息队列的消费方法、装置、服务器和介质
CN111371851B (zh) 一种连接方法、装置及电子设备和存储介质
CN105511904B (zh) 一种自动更新快捷窗口的方法及装置
CN111309406A (zh) 应用程序的事件处理方法、装置及电子设备
CN114979114B (zh) 云应用处理方法和系统
CN116450134A (zh) 可配置的前端控件校验控制器生成方法及系统
CN113507529A (zh) 基于Web应用实现文件下载的方法
JP2015052852A (ja) 情報処理装置、機能制限プログラム及び機能制限方法
CN109857742B (zh) 一种大数据虚拟表格快速显示方法及系统
CN107918654B (zh) 文件解压缩方法、装置及电子设备
CN113924548A (zh) 特征文件批的自动水合
CN109857719A (zh) 分布式文件处理方法、装置、计算机设备以及存储介质
US20090210647A1 (en) Method for dynamically resizing file systems
CN113656171A (zh) 应用于数据库的用户级别资源控制方法、装置及终端设备
US8140807B2 (en) System and computer program product for dynamically resizing file systems

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