首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grpc_pass nginx组态

问grpc_pass nginx组态
EN

Server Fault用户
提问于 2022-12-14 15:12:28
回答 1查看 344关注 0票数 0

当我对解析器执行相同的操作并设置grpc_pass时,它会失败:

代码语言:javascript
复制
    `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上遇到的错误是:

代码语言:javascript
复制
    `[Microsoft.Extensions.Hosting.Internal.Host)
    [BackgroundServiceFaulted status   BackgroundServledGrpc.Co.RpcException
    (StatusCode="Unknown", Detail="Bad gRPC response. HTTP status code: 500")`

当您有类似于此(示例)的配置时,它可以工作。

代码语言:javascript
复制
        `location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
         grpc_pass grpcs://dev_webui;
         }`

版本nginx;nginx version: nginx/1.23.2

EN

回答 1

Server Fault用户

发布于 2023-01-16 07:30:23

在对材料和试验进行了长时间的回顾后,发现了错误。

如果我们在配置中使用variables,grpc_pass应该有一个端口可以监听这个grpc,在本例中,https和grpcs将使用端口443。

所以我的工作配置是:

代码语言:javascript
复制
`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消息。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1118016

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档