リゾルバで同じことを実行し、grpc_pass を設定すると失敗します。
`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;
}`
grpc-client で発生するエラーは次のとおりです:
`[Microsoft.Extensions.Hosting.Internal.Host)
[BackgroundServiceFaulted status BackgroundServledGrpc.Co.RpcException
(StatusCode="Unknown", Detail="Bad gRPC response. HTTP status code: 500")`
このような構成(例)の場合、
`location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
grpc_pass grpcs://dev_webui;
}`
バージョン nginx;
nginx version: nginx/1.23.2
答え1
材料とテストを長期間検討した結果、エラーが発見されました。
variables
構成で使用する場合、grpc_pass
この grpc をリッスンできるポートが必要です。この例では、https と grpcs はポート 443 を使用します。
したがって、私にとっての作業構成は次のとおりです。
`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;
}`
興味深いことに、proxy_passではポートを指定する必要はありません。https://が示されているためだと思います。
この設定により、nginxが維持するスタックは利用可能なスタックから消去され、nginxはhost not found in upstream
再起動時にメッセージを送信しなくなります。