Quando faço o mesmo com o resolvedor e defino grpc_pass ele falha:
`server {
listen 443 http2:
server _name opc.org.com;
ssl....;
location / {
resolver 127.0.0.11 valid=30s;
set $https_webui https://dev_webui;
proxy_pass $https_webui;
}
location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
resolver 127.0.0.11 valid=30s;
set $grpc_webui grpcs://dev_webui;
grpc_pass $grpc_webui;
}`
O erro que estou recebendo no grpc-client é:
`[Microsoft.Extensions.Hosting.Internal.Host)
[BackgroundServiceFaulted status BackgroundServledGrpc.Co.RpcException
(StatusCode="Unknown", Detail="Bad gRPC response. HTTP status code: 500")`
Quando você tem uma configuração parecida com essa (exemplo) funciona
`location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
grpc_pass grpcs://dev_webui;
}`
Versão nginx;
nginx version: nginx/1.23.2
Responder1
Após uma longa revisão dos materiais e testes, o erro foi descoberto.
Se estivermos usando variables
na configuração, grpc_pass
deverá haver uma porta na qual este grpc possa ser escutado, neste exemplo https e grpcs usarão a porta 443.
Portanto, a configuração de trabalho para mim é:
`server {
listen 443 http2:
server _name opc.org.com;
ssl....;
location / {
resolver 127.0.0.11 valid=30s;
set $https_webui https://dev_webui;
proxy_pass $https_webui;
}
location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
resolver 127.0.0.11 valid=30s;
set $grpc_webui grpcs://dev_webui:443;
grpc_pass $grpc_webui;
}`
Curiosamente, para proxy_pass a porta não é necessário especificar, acho que devido à indicação de https://
Com esta configuração, qualquer pilha mantida pelo nginx pode ser eliminada das pilhas disponíveis e o nginx não enviará host not found in upstream
mensagens quando reiniciado