nginx grpc_pass仅在根目录下有效

5q4ezhmt  于 2023-01-01  发布在  Nginx
关注(0)|答案(2)|浏览(166)

这是可行的:

server {
    listen 5005 http2;
    
    location / {
        grpc_pass grpc://my_app:5001;
    }

    default_type application/grpc;
}

这是行不通的:

server {
    listen 5005 http2;
    
    location /test {
        grpc_pass grpc://my_app:5001;
    }

    default_type application/grpc;
}

当我转到localhost:5005时,我收到日志,它看起来像这样:

192.168.0.1 - - [20/Sep/2021:10:18:02 +0000] "POST /tasks.TasksServiceGRPC/AskForJob HTTP/2.0" 200 153 "-" "grpc-node/1.24.7 grpc-c/8.0.0 (windows; chttp2; ganges)" "-"

当我转到localhost:5005/test时,我甚至没有在nginx中获得日志
在http1.1上一切正常

q7solyqu

q7solyqu1#

由于请求结构的原因,这在grpc中是不可能的

laawzig2

laawzig22#

您应该将location值设置为客户端引用的grpcURL。

location /App.ControlRoom.Api.Contract.ApiService/UpdateOpcDaTags {
        grpc_pass grpcs://cdpkat-dev_webuidev;
        }

对你我是这样想的:

server {
    listen 5005 http2;
    
    location /tasks.TasksServiceGRPC/AskForJob {
        grpc_pass grpc://my_app:5001;
    }

    default_type application/grpc;
}

相关问题