diff --git a/golang/pkg/utils/utils.go b/golang/pkg/utils/utils.go
index 76be793..db145e4 100644
--- a/golang/pkg/utils/utils.go
+++ b/golang/pkg/utils/utils.go
@@ -72,31 +72,34 @@
 func ParseTarget(target string) (*v2.Endpoints, error) {
 	ret := &v2.Endpoints{
 		Scheme: v2.AddressScheme_DOMAIN_NAME,
-		Addresses: []*v2.Address{
-			{
-				Host: "",
-				Port: 80,
-			},
-		},
 	}
-	path := target
-	u, err := url.Parse(target)
-	if err != nil {
-		path = target
-		ret.Scheme = v2.AddressScheme_IPv4
-	} else {
-		if u.Host != "" {
-			path = u.Host
+	addressRawList := strings.Split(target, ";")
+	for _, path := range addressRawList {
+		if len(path) == 0 {
+			continue
 		}
-	}
-	paths := strings.Split(path, ":")
-	if len(paths) > 1 {
-		if port, err2 := strconv.ParseInt(paths[1], 10, 32); err2 == nil {
-			ret.Addresses[0].Port = int32(port)
+		address := &v2.Address{
+			Host: "",
+			Port: 80,
 		}
-		ret.Addresses[0].Host = paths[0]
-	} else {
-		return nil, fmt.Errorf("parse target failed, target=%s", target)
+		if u, err := url.Parse(path); err != nil {
+			address.Host = path
+			ret.Scheme = v2.AddressScheme_IPv4
+		} else {
+			if u.Host != "" {
+				address.Host = u.Host
+			}
+		}
+		paths := strings.Split(path, ":")
+		if len(paths) > 1 {
+			if port, err2 := strconv.ParseInt(paths[1], 10, 32); err2 == nil {
+				address.Port = int32(port)
+			}
+			address.Host = paths[0]
+		} else {
+			return nil, fmt.Errorf("parse target failed, target=%s", target)
+		}
+		ret.Addresses = append(ret.Addresses, address)
 	}
 	return ret, nil
 }
diff --git a/golang/pkg/utils/utils_test.go b/golang/pkg/utils/utils_test.go
index c26f8c4..bf43349 100644
--- a/golang/pkg/utils/utils_test.go
+++ b/golang/pkg/utils/utils_test.go
@@ -73,6 +73,26 @@
 	if err != nil {
 		t.Error(err)
 	}
+
+	endpointsExpect := &v2.Endpoints{
+		Scheme: v2.AddressScheme_IPv4,
+		Addresses: []*v2.Address{
+			{
+				Host: "127.0.0.1",
+				Port: 80,
+			},
+			{
+				Host: "127.0.0.1",
+				Port: 81,
+			},
+		},
+	}
+	endpoints, err := ParseTarget("127.0.0.1:80;127.0.0.1:81;")
+	if err != nil {
+		t.Error(err)
+	} else if !CompareEndpoints(endpointsExpect, endpoints) {
+		t.Errorf("Expected endpoints: %v, but got: %v", endpointsExpect, endpoints)
+	}
 }
 
 func TestMatchMessageType(t *testing.T) {
