Skip to content

Commit 9b6a367

Browse files
authored
Merge pull request #277 from pleshakov/grpc-error-codes
Support grpc error responses
2 parents a4b2701 + 16c0f48 commit 9b6a367

File tree

2 files changed

+92
-2
lines changed

2 files changed

+92
-2
lines changed

nginx-controller/nginx/templates/nginx-plus.ingress.tmpl

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,21 @@ server {
8080
{{range $location := $server.Locations}}
8181
location {{$location.Path}} {
8282
{{if $location.GRPC}}
83+
{{if not $server.GRPCOnly}}
84+
error_page 400 @grpcerror400;
85+
error_page 401 @grpcerror401;
86+
error_page 403 @grpcerror403;
87+
error_page 404 @grpcerror404;
88+
error_page 405 @grpcerror405;
89+
error_page 408 @grpcerror408;
90+
error_page 414 @grpcerror414;
91+
error_page 426 @grpcerror426;
92+
error_page 500 @grpcerror500;
93+
error_page 501 @grpcerror501;
94+
error_page 502 @grpcerror502;
95+
error_page 503 @grpcerror503;
96+
error_page 504 @grpcerror504;
97+
{{end}}
8398

8499
{{- if $location.LocationSnippets}}
85100
{{range $value := $location.LocationSnippets}}
@@ -144,4 +159,34 @@ server {
144159
{{end}}
145160
{{end}}
146161
}{{end}}
162+
{{if $server.GRPCOnly}}
163+
error_page 400 @grpcerror400;
164+
error_page 401 @grpcerror401;
165+
error_page 403 @grpcerror403;
166+
error_page 404 @grpcerror404;
167+
error_page 405 @grpcerror405;
168+
error_page 408 @grpcerror408;
169+
error_page 414 @grpcerror414;
170+
error_page 426 @grpcerror426;
171+
error_page 500 @grpcerror500;
172+
error_page 501 @grpcerror501;
173+
error_page 502 @grpcerror502;
174+
error_page 503 @grpcerror503;
175+
error_page 504 @grpcerror504;
176+
{{end}}
177+
{{if $server.HTTP2}}
178+
location @grpcerror400 { default_type application/grpc; return 400 "\n"; }
179+
location @grpcerror401 { default_type application/grpc; return 401 "\n"; }
180+
location @grpcerror403 { default_type application/grpc; return 403 "\n"; }
181+
location @grpcerror404 { default_type application/grpc; return 404 "\n"; }
182+
location @grpcerror405 { default_type application/grpc; return 405 "\n"; }
183+
location @grpcerror408 { default_type application/grpc; return 408 "\n"; }
184+
location @grpcerror414 { default_type application/grpc; return 414 "\n"; }
185+
location @grpcerror426 { default_type application/grpc; return 426 "\n"; }
186+
location @grpcerror500 { default_type application/grpc; return 500 "\n"; }
187+
location @grpcerror501 { default_type application/grpc; return 501 "\n"; }
188+
location @grpcerror502 { default_type application/grpc; return 502 "\n"; }
189+
location @grpcerror503 { default_type application/grpc; return 503 "\n"; }
190+
location @grpcerror504 { default_type application/grpc; return 504 "\n"; }
191+
{{end}}
147192
}{{end}}

nginx-controller/nginx/templates/nginx.ingress.tmpl

Lines changed: 47 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,14 +61,29 @@ server {
6161
{{if $location.IngressResource}} # *Minion*, configured in Ingress Resource: {{$location.IngressResource}}{{end}}
6262
location {{$location.Path}} {
6363
{{if $location.GRPC}}
64+
{{if not $server.GRPCOnly}}
65+
error_page 400 @grpcerror400;
66+
error_page 401 @grpcerror401;
67+
error_page 403 @grpcerror403;
68+
error_page 404 @grpcerror404;
69+
error_page 405 @grpcerror405;
70+
error_page 408 @grpcerror408;
71+
error_page 414 @grpcerror414;
72+
error_page 426 @grpcerror426;
73+
error_page 500 @grpcerror500;
74+
error_page 501 @grpcerror501;
75+
error_page 502 @grpcerror502;
76+
error_page 503 @grpcerror503;
77+
error_page 504 @grpcerror504;
78+
{{end}}
79+
6480
{{- if $location.LocationSnippets}}
6581
{{range $value := $location.LocationSnippets}}
6682
{{$value}}{{end}}
6783
{{- end}}
6884

6985
grpc_connect_timeout {{$location.ProxyConnectTimeout}};
70-
proxy_read_timeout {{$location.ProxyReadTimeout}};
71-
client_max_body_size {{$location.ClientMaxBodySize}};
86+
grpc_read_timeout {{$location.ProxyReadTimeout}};
7287
grpc_set_header Host $host;
7388
grpc_set_header X-Real-IP $remote_addr;
7489
grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
@@ -126,4 +141,34 @@ server {
126141
{{end}}
127142
{{end}}
128143
}{{end}}
144+
{{if $server.GRPCOnly}}
145+
error_page 400 @grpcerror400;
146+
error_page 401 @grpcerror401;
147+
error_page 403 @grpcerror403;
148+
error_page 404 @grpcerror404;
149+
error_page 405 @grpcerror405;
150+
error_page 408 @grpcerror408;
151+
error_page 414 @grpcerror414;
152+
error_page 426 @grpcerror426;
153+
error_page 500 @grpcerror500;
154+
error_page 501 @grpcerror501;
155+
error_page 502 @grpcerror502;
156+
error_page 503 @grpcerror503;
157+
error_page 504 @grpcerror504;
158+
{{end}}
159+
{{if $server.HTTP2}}
160+
location @grpcerror400 { default_type application/grpc; return 400 "\n"; }
161+
location @grpcerror401 { default_type application/grpc; return 401 "\n"; }
162+
location @grpcerror403 { default_type application/grpc; return 403 "\n"; }
163+
location @grpcerror404 { default_type application/grpc; return 404 "\n"; }
164+
location @grpcerror405 { default_type application/grpc; return 405 "\n"; }
165+
location @grpcerror408 { default_type application/grpc; return 408 "\n"; }
166+
location @grpcerror414 { default_type application/grpc; return 414 "\n"; }
167+
location @grpcerror426 { default_type application/grpc; return 426 "\n"; }
168+
location @grpcerror500 { default_type application/grpc; return 500 "\n"; }
169+
location @grpcerror501 { default_type application/grpc; return 501 "\n"; }
170+
location @grpcerror502 { default_type application/grpc; return 502 "\n"; }
171+
location @grpcerror503 { default_type application/grpc; return 503 "\n"; }
172+
location @grpcerror504 { default_type application/grpc; return 504 "\n"; }
173+
{{end}}
129174
}{{end}}

0 commit comments

Comments
 (0)