diff --git a/admin/src/main/java/com/example/action/AjaxController.java b/admin/src/main/java/com/example/action/AjaxController.java index 4fb0c38..3b808c7 100644 --- a/admin/src/main/java/com/example/action/AjaxController.java +++ b/admin/src/main/java/com/example/action/AjaxController.java @@ -148,6 +148,9 @@ public class AjaxController { baseResponse.addError(ErrorType.BUSINESS_ERROR, "程序尚未运行"); return baseResponse; } + // 刷新配置文件 + flushConfig(); + // 重新加载配置文件 ProcessUtil.execBat(nginxCtrl.getReloadCmd()); return baseResponse; } @@ -210,10 +213,15 @@ public class AjaxController { } private void flushConfig() { + Writer wr = null; try { + File config = nginxCtrl.getConfig(); HashMap context = new HashMap<>(); + + PortLoadResponse portLoadResponse = (PortLoadResponse) loadPort("", LocalData.getSysToken()); + context.put("services",portLoadResponse.getResult()); Template template = freeMarkerConfigurer.getConfiguration().getTemplate("nginx.conf"); - Writer wr = new OutputStreamWriter(new FileOutputStream(outfile), "UTF-8"); + wr = new OutputStreamWriter(new FileOutputStream(config), "UTF-8"); //写入 template.process(context, wr); //关闭流 @@ -222,6 +230,12 @@ public class AjaxController { e.printStackTrace(); } catch (TemplateException e) { e.printStackTrace(); + } finally { + try { + wr.close(); + } catch (IOException e) { + e.printStackTrace(); + } } } } diff --git a/admin/src/main/java/com/example/config/NginxConfig.java b/admin/src/main/java/com/example/config/NginxConfig.java index dddc76d..6e1a151 100644 --- a/admin/src/main/java/com/example/config/NginxConfig.java +++ b/admin/src/main/java/com/example/config/NginxConfig.java @@ -71,7 +71,7 @@ public class NginxConfig { nginxCtrl.setStopCmd(stop.getAbsolutePath()); nginxCtrl.setReloadCmd(reload.getAbsolutePath()); nginxCtrl.setVersionCmd(nginxHome.getAbsolutePath() + " -v "); - + nginxCtrl.setConfig(new File(new File(nginxHome, "conf"), "nginx.conf")); return nginxCtrl; } } diff --git a/admin/src/main/java/com/example/module/admin/ent/Mapping.java b/admin/src/main/java/com/example/module/admin/ent/Mapping.java index c67c099..2c6439e 100644 --- a/admin/src/main/java/com/example/module/admin/ent/Mapping.java +++ b/admin/src/main/java/com/example/module/admin/ent/Mapping.java @@ -25,24 +25,15 @@ public class Mapping { */ @TableField private Long serviceId; - - /** - * NAME - 映射名称 - */ @TableField private String name; - /** - * VALUE - 映射值 - */ @TableField - private String value; - /** - * BZ - 备注 - */ + private String context; + @TableField + private String location; @TableField private String bz; @TableField -// @JsonFormat(timezone = "GMT+8", pattern = "yyyyMMddHHmmss") private Date createTime; @TableField private boolean isDeleted; @@ -63,12 +54,20 @@ public class Mapping { this.name = name; } - public String getValue() { - return value; + public String getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + + public String getLocation() { + return location; } - public void setValue(String value) { - this.value = value; + public void setLocation(String location) { + this.location = location; } public String getBz() { diff --git a/admin/src/main/java/com/example/module/admin/ent/NginxCtrl.java b/admin/src/main/java/com/example/module/admin/ent/NginxCtrl.java index e78fee2..83b04df 100644 --- a/admin/src/main/java/com/example/module/admin/ent/NginxCtrl.java +++ b/admin/src/main/java/com/example/module/admin/ent/NginxCtrl.java @@ -3,22 +3,25 @@ package com.example.module.admin.ent; import com.example.frame.utils.ProcessUtil; +import java.io.File; + public class NginxCtrl { private String startCmd = "start nginx"; private String stopCmd = "nginx.exe -s quit"; private String reloadCmd = "nginx.exe -s reload"; private String versionCmd = "nginx -v"; + private File config = null; - public void doStart(){ + public void doStart() { ProcessUtil.exec(startCmd); } - public void doStop(){ + public void doStop() { ProcessUtil.exec(stopCmd); } - public void doReload(){ + public void doReload() { ProcessUtil.exec(reloadCmd); } @@ -54,7 +57,15 @@ public class NginxCtrl { this.versionCmd = versionCmd; } - public boolean isRunning(){ + public File getConfig() { + return config; + } + + public void setConfig(File config) { + this.config = config; + } + + public boolean isRunning() { return ProcessUtil.findProcess("nginx.exe"); } } diff --git a/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java b/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java index b68cd91..cce23d7 100644 --- a/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java +++ b/admin/src/main/java/com/example/module/admin/req/MappingCreateRequest.java @@ -7,6 +7,7 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.Pattern; import org.hibernate.validator.constraints.Length; +import xyz.wbsite.wsqlite.anonation.TableField; /** * MappingCreateRequest - 映射新增 @@ -32,7 +33,10 @@ public class MappingCreateRequest extends BaseRequest { @NotNull(message = "映射值不能为空") @Pattern(regexp = "[^/]*", message = "映射值不能存在/") @Pattern(regexp = "\\w*", message = "映射值需为英文") - private String value; + private String context; + + @TableField + private String location; /** * BZ - 备注 @@ -55,12 +59,20 @@ public class MappingCreateRequest extends BaseRequest { this.name = name; } - public String getValue() { - return value; + public String getContext() { + return context; + } + + public void setContext(String context) { + this.context = context; + } + + public String getLocation() { + return location; } - public void setValue(String value) { - this.value = value; + public void setLocation(String location) { + this.location = location; } public String getBz() { diff --git a/admin/src/main/resources/templates/nginx.conf b/admin/src/main/resources/templates/nginx.conf.ftl similarity index 87% rename from admin/src/main/resources/templates/nginx.conf rename to admin/src/main/resources/templates/nginx.conf.ftl index 8c7b6c8..9e2b4e6 100644 --- a/admin/src/main/resources/templates/nginx.conf +++ b/admin/src/main/resources/templates/nginx.conf.ftl @@ -20,6 +20,8 @@ http { sendfile on; keepalive_timeout 65; +<#list services as item> + server { listen 8888; server_name localhost; @@ -28,13 +30,9 @@ http { #access_log logs/host.access.log main; - location / { - root html; - index index.html index.htm; - } - - location /tzzdxxsb/ { - proxy_pass http://127.0.0.1:8081/; +<#list services.mappingList as mapping> + location /#{mapping.context} { + proxy_pass http://#{location}; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; @@ -49,12 +47,14 @@ http { proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; index index.html index.htm index.jsp index.do; - + } + error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } + } diff --git a/admin/src/main/resources/templates/screen/mapping.ftl b/admin/src/main/resources/templates/screen/mapping.ftl index ee6f4a1..085644c 100644 --- a/admin/src/main/resources/templates/screen/mapping.ftl +++ b/admin/src/main/resources/templates/screen/mapping.ftl @@ -68,11 +68,16 @@ - + + + + + + @@ -97,7 +102,12 @@ + prop="context"> + +