• wyw
    2019-07-09
    content阶段之前的都只有http协议吗? 那我grpc client访问nginx的时候用的是grpc协议,是说nginx接收grpc请求的时候,就把grpc解析成了http协议吗?然后又在content阶段重新转换成grpc?那是不是可以这么理解,其实content阶段之前的所有处理都是可以按http协议来的?老师你这块知识点课程里面有讲到吗,我没找到。

    作者回复: nginx对下游的协议支持是有限的,比如http{}下的都只有http协议,你配置grpc的server是在http{}下吗?

    
    
  • wyw
    2019-07-08
    老师请教个问题 如何对grpc协议进行鉴权。用auth_request吗,grpc协议有个metadata 好像可以传header信息。

    作者回复: 1、auth_request工作在access阶段,此时只有http协议,没有grpc协议;
    2、grpc协议转换工作在content阶段。
    3、grpc本质是http2协议,在其上又封装了两层协议。

     1
    
  • wyw
    2019-07-02
    老师是不是可以这样理解 不管是http2还是grpc到了nginx其实都被转换成了http1.1 所以content之前的所有模块都能用

    作者回复: 不是,对下游客户端nginx可以处理http1.1或者http2,然后经由content之前阶段的模块,到content阶段可以经由各proxy模块转换为grpc等其他协议。所以content前模块都能用。

    
    
  • wyw
    2019-07-02
    好的老师,我去看下你的新课程。我的意思是之前nginx处理http的11个阶段的模块都是基于http协议来的,现在换成grpc 首先协议换成了http2,那么之前介绍的那些模块还能用吗?

    作者回复: 只要面向客户端的协议是http协议,都能用

    
    
  • wyw
    2019-07-02
    老师grpc 协议使用的是http2 又对数据进行了序列化,那http的那些协议是否还适用呢?是否需要二次开发,还是需要寻找新的模块?

    作者回复: 你是问http的那些协议?还是http的那些模块?模块仍然可以使用,因为只是content阶段转给grpc模块了;
    关于协议,grpc在http2上先用protobuf封装,又用grpc封装,我的《Web协议详解与抓包实战》第3部分倒数第2节课有详细分析。

    
    
  • wyw
    2019-07-01
    老师grpc的反向代理 我们还可以像http一样方便控制每一个请求吗?比如限流 abtest 鉴权

    作者回复: 可以,content阶段之前的access/rewrite/post_read阶段模块正常执行

    
    
  • Panda
    2019-04-08
    Go + gRPC 很方便 都是 Google 家的🤓
    
    
  • 贲佳振
    2019-02-23
    老师,如果是grpc反向代理,客户端只能用grpc协议访问吗?能不能客户端还是htp协议,nginx自动转成grpc反向代理?

    作者回复: 1、是的。
    2、不行,建立http1.1与grpc映射关系太不通用,现在也还没有这样的模块

    
    
  • 李博越
    2019-01-15
    老师,您好!
    我这边想实现用grpc配置代理服务器的方式连接服务节点,架构图见:`https://github.com/liboyue23/blog/blob/master/share.jpg`
    本来是用grpc直连server节点(后端直连的ip port是动态的),但是由于vpc网络问题,我们这边希望是在rpc过程中间加nginx作为代理服务器,想通过grpc实现类似于
    curl --proxy http://127.0.0.1:8000 "http://127.0.0.1:8081/heartbeat/ping" 这样的直连效果:client的目标服务还是原来的服务地址,proxy就是nginx作为代理服务器,这个我已经实现好了,nginx的配置见`https://github.com/liboyue23/blog/blob/master/http_proxy_nginx.conf`
    但是如何给grpc做代理?就以grpc官网的demo为例,服务端口还是50051,看grpc源码可以配置环境变量GRPC_PROXY_EXP=127.0.0.1:4431指定代理服务器地址,这里我指定nginx的地址,nginx的配置见`https://github.com/liboyue23/blog/blob/master/grpc_nginx.conf` 其中server.crt和server.key是我用openssl做的
    client执行以后发现请求根本没打到nginx上
想问下,通过nginx这种做正向代理实现client到server直连调用的效果,grpc有方案么?
    展开

    作者回复: 没看明白,有完整的业务场景介绍吗?可以发我邮箱russelltao@foxmail.com

    
    
  • 李博越
    2019-01-14
    这里的include /etc/letsencrypt/options-ssl-nginx.conf;配置文件有么?里面是如何配置的?

    作者回复: 这是letsencrypt自动生成的,文件内容如下:
    ssl_session_cache shared:le_nginx_SSL:1m;
    ssl_session_timeout 1440m;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;

    ssl_ciphers "ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS";

    
    
我们在线,来聊聊吧