当我对解析器执行相同的操作并设置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
发布于 2023-01-16 07:30:23
在对材料和试验进行了长时间的回顾后,发现了错误。
如果我们在配置中使用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消息。
https://serverfault.com/questions/1118016
复制相似问题