Skip to content

Commit 72b6fc1

Browse files
committed
Add logic for defining port in redirect based on scheme
1 parent fa38602 commit 72b6fc1

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

internal/nginx/config/servers.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,14 @@ func createReturnValForRedirectFilter(filter *v1beta1.HTTPRequestRedirectFilter,
198198
port := listenerPort
199199
if filter.Port != nil {
200200
port = int32(*filter.Port)
201+
} else {
202+
if filter.Scheme != nil {
203+
if *filter.Scheme == "http" {
204+
port = 80
205+
} else if *filter.Scheme == "https" {
206+
port = 443
207+
}
208+
}
201209
}
202210

203211
scheme := "$scheme"

internal/nginx/config/servers_test.go

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,42 @@ func TestCreateReturnValForRedirectFilter(t *testing.T) {
913913
},
914914
msg: "all fields are set",
915915
},
916+
{
917+
filter: &v1beta1.HTTPRequestRedirectFilter{
918+
Scheme: helpers.GetStringPointer("https"),
919+
Hostname: (*v1beta1.PreciseHostname)(helpers.GetStringPointer("foo.example.com")),
920+
StatusCode: helpers.GetIntPointer(101),
921+
},
922+
expected: &http.Return{
923+
Code: 101,
924+
Body: "https://foo.example.com:443$request_uri",
925+
},
926+
msg: "scheme is https, no port is set",
927+
},
928+
{
929+
filter: &v1beta1.HTTPRequestRedirectFilter{
930+
Scheme: helpers.GetStringPointer("http"),
931+
Hostname: (*v1beta1.PreciseHostname)(helpers.GetStringPointer("foo.example.com")),
932+
StatusCode: helpers.GetIntPointer(101),
933+
},
934+
expected: &http.Return{
935+
Code: 101,
936+
Body: "http://foo.example.com:80$request_uri",
937+
},
938+
msg: "scheme is http, no port is set",
939+
},
940+
{
941+
filter: &v1beta1.HTTPRequestRedirectFilter{
942+
Scheme: helpers.GetStringPointer("custom"),
943+
Hostname: (*v1beta1.PreciseHostname)(helpers.GetStringPointer("foo.example.com")),
944+
StatusCode: helpers.GetIntPointer(101),
945+
},
946+
expected: &http.Return{
947+
Code: 101,
948+
Body: "custom://foo.example.com:123$request_uri",
949+
},
950+
msg: "scheme is custom, no port is set",
951+
},
916952
}
917953

918954
for _, test := range tests {

0 commit comments

Comments
 (0)