小编gan*_*eed的帖子

如何找出 Nginx 在用作 http/2 负载均衡器时返回 400 的原因?

我自己实现了一个 http/2 代理,并使用 Nginx 作为负载均衡器。

当我使用 Nginx 作为 h2c 负载均衡器时,它可以工作:

server {
    listen 8443 http2;

    location / {
        error_log /Users/jiajun/nginx_error_log.log debug;
        grpc_pass grpc://127.0.0.1:2017;
    }
}
Run Code Online (Sandbox Code Playgroud)

运行:

server {
    listen 8443 http2;

    location / {
        error_log /Users/jiajun/nginx_error_log.log debug;
        grpc_pass grpc://127.0.0.1:2017;
    }
}
Run Code Online (Sandbox Code Playgroud)

Nginx访问日志为:

127.0.0.1 - - [28/Jan/2019:11:50:46 +0800] "POST /helloworld.Greeter/SayHello HTTP/2.0" 200 18 "-" "grpc-go/1.16.0" "-"
Run Code Online (Sandbox Code Playgroud)

但当我在 SSL 下提供服务时它不起作用:

server {
    listen 8443 ssl http2;
    ssl_certificate     /Users/jiajun/127.0.0.1.crt;
    ssl_certificate_key /Users/jiajun/127.0.0.1.key;

    location / {
        error_log /Users/jiajun/nginx_error_log.log debug;
        grpc_pass grpc://127.0.0.1:2017;
    }
}
Run Code Online (Sandbox Code Playgroud)

运行:

$ …
Run Code Online (Sandbox Code Playgroud)

nginx http2 grpc

5
推荐指数
1
解决办法
7966
查看次数

标签 统计

grpc ×1

http2 ×1

nginx ×1