diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfig.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfig.java index 9738ac57..7603addf 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfig.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfig.java @@ -18,10 +18,15 @@ public class ProxyConfig { @Inject("${neutrino.proxy.protocol}") private Protocol protocol; /** - * 服务端配置 + * 代理服务配置 */ @Inject("${neutrino.proxy.server}") private Server server; + /** + * 代理隧道配置 + */ + @Inject("${neutrino.proxy.tunnel}") + private Tunnel tunnel; @Data public static class Protocol { @@ -37,15 +42,22 @@ public class ProxyConfig { @Data public static class Server { + private Integer bossThreadCount; + private Integer workThreadCount; + private String domainName; + private Integer httpProxyPort; + private Integer httpsProxyPort; + } + + @Data + public static class Tunnel { + private Integer bossThreadCount; + private Integer workThreadCount; private Integer port; private Integer sslPort; private String keyStorePassword; private String keyManagerPassword; private String jksPath; - private Integer bossThreadCount; - private Integer workThreadCount; - private String domainName; - private Integer httpProxyPort; } } diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java index 41eeebc5..a4c2ca6b 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/base/proxy/ProxyConfiguration.java @@ -43,4 +43,14 @@ public class ProxyConfiguration implements LifecycleBean { return new NioEventLoopGroup(proxyConfig.getServer().getWorkThreadCount()); } + @Bean("tunnelBossGroup") + public NioEventLoopGroup tunnelBossGroup(@Inject ProxyConfig proxyConfig) { + return new NioEventLoopGroup(proxyConfig.getTunnel().getBossThreadCount()); + } + + @Bean("tunnelWorkerGroup") + public NioEventLoopGroup tunnelWorkerGroup(@Inject ProxyConfig proxyConfig) { + return new NioEventLoopGroup(proxyConfig.getTunnel().getWorkThreadCount()); + } + } diff --git a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyServerRunner.java b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyServerRunner.java index 44d59a90..0e634d0e 100644 --- a/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyServerRunner.java +++ b/neutrino-proxy-server/src/main/java/org/dromara/neutrinoproxy/server/proxy/core/ProxyServerRunner.java @@ -36,20 +36,10 @@ import java.security.KeyStore; public class ProxyServerRunner implements EventListener { @Inject private ProxyConfig proxyConfig; - @Inject("serverBossGroup") + @Inject("tunnelBossGroup") private NioEventLoopGroup serverBossGroup; - @Inject("serverWorkerGroup") + @Inject("tunnelWorkerGroup") private NioEventLoopGroup serverWorkerGroup; - @Inject("${neutrino.proxy.server.port}") - private Integer port; - @Inject("${neutrino.proxy.server.ssl-port}") - private Integer sslPort; - @Inject("${neutrino.proxy.server.jks-path}") - private String jksPath; - @Inject("${neutrino.proxy.server.key-store-password}") - private String keyStorePassword; - @Inject("${neutrino.proxy.server.key-manager-password}") - private String keyManagerPassword; @Override public void onEvent(AppLoadEndEvent appLoadEndEvent) throws Throwable { startProxyServer(); @@ -68,15 +58,15 @@ public class ProxyServerRunner implements EventListener { } }); try { - bootstrap.bind(port).sync(); - log.info("代理服务启动,端口:{}", port); + bootstrap.bind(proxyConfig.getTunnel().getPort()).sync(); + log.info("代理服务启动,端口:{}", proxyConfig.getTunnel().getPort()); } catch (Exception e) { log.error("代理服务异常", e); } } private void startProxyServerForSSL() { - if (null == sslPort) { + if (null == proxyConfig.getTunnel().getSslPort()) { return; } ServerBootstrap bootstrap = new ServerBootstrap(); @@ -89,8 +79,8 @@ public class ProxyServerRunner implements EventListener { } }); try { - bootstrap.bind(sslPort).sync(); - log.info("代理服务启动,SSL端口: {}", sslPort); + bootstrap.bind(proxyConfig.getTunnel().getSslPort()).sync(); + log.info("代理服务启动,SSL端口: {}", proxyConfig.getTunnel().getSslPort()); } catch (Exception e) { log.error("代理服务异常", e); } @@ -98,13 +88,13 @@ public class ProxyServerRunner implements EventListener { private ChannelHandler createSslHandler() { try { - InputStream jksInputStream = FileUtil.getInputStream(jksPath); + InputStream jksInputStream = FileUtil.getInputStream(proxyConfig.getTunnel().getJksPath()); SSLContext serverContext = SSLContext.getInstance("TLS"); final KeyStore ks = KeyStore.getInstance("JKS"); - ks.load(jksInputStream, keyStorePassword.toCharArray()); + ks.load(jksInputStream, proxyConfig.getTunnel().getKeyStorePassword().toCharArray()); final KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm()); - kmf.init(ks, keyManagerPassword.toCharArray()); + kmf.init(ks, proxyConfig.getTunnel().getKeyManagerPassword().toCharArray()); TrustManager[] trustManagers = null; serverContext.init(kmf.getKeyManagers(), trustManagers, null); diff --git a/neutrino-proxy-server/src/main/resources/app.yml b/neutrino-proxy-server/src/main/resources/app.yml index 6ff69f89..490347c2 100644 --- a/neutrino-proxy-server/src/main/resources/app.yml +++ b/neutrino-proxy-server/src/main/resources/app.yml @@ -12,15 +12,19 @@ neutrino: read-idle-time: 40 write-idle-time: 5 all-idle-time-seconds: 0 - server: - boss-thread-count: 10 - work-thread-count: 60 + tunnel: + boss-thread-count: 2 + work-thread-count: 10 port: ${OPEN_PORT:9000} ssl-port: ${SSL_PORT:9002} key-store-password: ${STORE_PASS:123456} key-manager-password: ${MGR_PASS:123456} jks-path: ${JKS_PATH:classpath:/test.jks} + server: + boss-thread-count: 5 + work-thread-count: 20 http-proxy-port: ${HTTP_PROXY_PORT:80} + https-proxy-port: ${HTTPS_PROXY_PORT:443} # 如果不配置,则不支持域名映射 domain-name: ${DOMAIN_NAME:} data: