@@ -414,7 +414,7 @@ public NgxBlock buildBlockUpstream(Upstream upstream) {
414414 return ngxBlockServer ;
415415 }
416416
417- public static List <Integer > processPort (String listenString ){
417+ public List <Integer > processPort (String listenString ) {
418418 List <Integer > numbers = new ArrayList <>();
419419
420420 // 使用逗号分割字符串
@@ -445,13 +445,26 @@ public static List<Integer> processPort(String listenString){
445445 return numbers ;
446446 }
447447
448- public static Boolean processListenPort (Server server , NgxBlock ngxBlockServer , Boolean isIpv6 ) {
449- if (isIpv6 && server .getIpv6 () != 1 ){
450- return false ;
448+ public void httpListenPort (Server server , NgxBlock ngxBlockServer , Boolean isIpv6 ) {
449+ String host = null ;
450+ List <Integer > ports = null ;
451+ // 分离host和port
452+ if (server .getListen ().contains (":" )) {
453+ int lastColonIndex = server .getListen ().lastIndexOf (":" );
454+ host = server .getListen ().substring (0 , lastColonIndex );
455+ ports = processPort (server .getListen ().substring (lastColonIndex + 1 ));
456+ } else {
457+ ports = processPort (server .getListen ());
458+ }
459+
460+ String listenKey = null ;
461+ if (isIpv6 ) {
462+ listenKey = "listen [::]:" ;
463+ } else if (host != null ) {
464+ listenKey = "listen " + host + ":" ;
465+ } else {
466+ listenKey = "listen " ;
451467 }
452- List <Integer > ports = processPort (server .getListen ());
453-
454- String listenKey = isIpv6 ? "listen [::]:" : "listen " ;
455468
456469 String value = "" ;
457470 for (Integer port : ports ) {
@@ -473,7 +486,47 @@ public static Boolean processListenPort(Server server, NgxBlock ngxBlockServer,
473486 ngxParam .addValue (value );
474487 ngxBlockServer .addEntry (ngxParam );
475488 }
476- return true ;
489+
490+ }
491+
492+
493+ public void tcpListenPort (Server server , NgxBlock ngxBlockServer , Boolean isIpv6 ) {
494+ String host = null ;
495+ List <Integer > ports = null ;
496+ // 分离host和port
497+ if (server .getListen ().contains (":" )) {
498+ int lastColonIndex = server .getListen ().lastIndexOf (":" );
499+ host = server .getListen ().substring (0 , lastColonIndex );
500+ ports = processPort (server .getListen ().substring (lastColonIndex + 1 ));
501+ } else {
502+ ports = processPort (server .getListen ());
503+ }
504+
505+ String listenKey = null ;
506+ if (isIpv6 ) {
507+ listenKey = "listen [::]:" ;
508+ } else if (host != null ) {
509+ listenKey = "listen " + host + ":" ;
510+ } else {
511+ listenKey = "listen " ;
512+ }
513+
514+ String value = "" ;
515+ for (Integer port : ports ) {
516+ NgxParam ngxParam = new NgxParam ();
517+ value = listenKey + port ;
518+ if (server .getProxyProtocol () == 1 ) {
519+ value += " proxy_protocol" ;
520+ }
521+ if (server .getProxyType () == 2 ) {
522+ value += " udp" ;
523+ }
524+ if (server .getSsl () != null && server .getSsl () == 1 ) {
525+ value += " ssl" ;
526+ }
527+ ngxParam .addValue (value );
528+ ngxBlockServer .addEntry (ngxParam );
529+ }
477530
478531 }
479532
@@ -501,10 +554,10 @@ public NgxBlock bulidBlockServer(Server server, ConfExt confExt) {
501554 }
502555
503556 // 监听端口
504- processListenPort (server , ngxBlockServer , false );
505- // 监控ipv6
506- processListenPort (server , ngxBlockServer , true );
507-
557+ httpListenPort (server , ngxBlockServer , false );
558+ if ( server . getIpv6 () == 1 ) {
559+ httpListenPort (server , ngxBlockServer , true );
560+ }
508561
509562 if (server .getSsl () == 1 && server .getHttp2 () == 2 ) { // http2新版写法
510563 ngxParam = new NgxParam ();
@@ -685,38 +738,13 @@ public NgxBlock bulidBlockServer(Server server, ConfExt confExt) {
685738 } else {
686739 ngxBlockServer .addValue ("server" );
687740
741+
688742 // 监听端口
689- ngxParam = new NgxParam ();
690- String value = "listen " + server .getListen ();
691- if (server .getProxyProtocol () == 1 ) {
692- value += " proxy_protocol" ;
693- }
694- if (server .getProxyType () == 2 ) {
695- value += " udp" ;
696- }
697- if (server .getSsl () != null && server .getSsl () == 1 ) {
698- value += " ssl" ;
699- }
700-
701- ngxParam .addValue (value );
702- ngxBlockServer .addEntry (ngxParam );
703-
704- // 监控ipv6
743+ tcpListenPort (server , ngxBlockServer , false );
705744 if (server .getIpv6 () == 1 ) {
706- ngxParam = new NgxParam ();
707- value = "listen [::]:" + replaceIp (server .getListen ());
708- if (server .getProxyProtocol () == 1 ) {
709- value += " proxy_protocol" ;
710- }
711- if (server .getProxyType () == 2 ) {
712- value += " udp" ;
713- }
714- if (server .getSsl () != null && server .getSsl () == 1 ) {
715- value += " ssl" ;
716- }
717- ngxParam .addValue (value );
718- ngxBlockServer .addEntry (ngxParam );
745+ tcpListenPort (server , ngxBlockServer , true );
719746 }
747+
720748
721749 // 指向负载均衡
722750 Upstream upstream = sqlHelper .findById (server .getProxyUpstreamId (), Upstream .class );
0 commit comments