Wenn ich dasselbe mit Resolver mache und grpc_pass einstelle, schlägt es fehl:
`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;
}`
Der Fehler, den ich beim Grpc-Client erhalte, ist:
`[Microsoft.Extensions.Hosting.Internal.Host)
[BackgroundServiceFaulted status BackgroundServledGrpc.Co.RpcException
(StatusCode="Unknown", Detail="Bad gRPC response. HTTP status code: 500")`
Wenn Sie eine Konfiguration wie diese (Beispiel) haben, funktioniert es
`location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
grpc_pass grpcs://dev_webui;
}`
Version nginx;
nginx version: nginx/1.23.2
Antwort1
Nach längerer Materialprüfung und Tests wurde der Fehler entdeckt.
variables
Wenn wir in der Konfiguration verwenden , grpc_pass
sollte ein Port vorhanden sein, auf dem dieser GRPC abgehört werden kann. In diesem Beispiel verwenden https und GRPCs Port 443.
Die für mich funktionierende Konfiguration ist also:
`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;
}`
Interessanterweise ist für proxy_pass keine Angabe des Ports notwendig, ich denke aufgrund der Angabe von https://
Mit dieser Konfiguration kann jeder von nginx verwaltete Stapel aus den verfügbaren Stapeln gelöscht werden, und nginx sendet host not found in upstream
beim Neustart keine Nachricht