在Nginx的同一台服务器下混合http和http2

时间:2019-03-02 18:44:50

标签: nginx grpc

我正在nginx上尝试使用一台服务器来同时服务于http2路由和传统的http1路由,我的问题是我无法使其正常运行。

当我尝试在运行于gunicorn + flask的子文件夹中访问我的应用程序时,我得到了带有一些二进制文件的下载文件

我该如何兼顾?


    server {
        listen 80 http2;

        access_log /dev/stdout main;
        rewrite_log on;
        error_log /dev/stdout debug;

        location /some.Service {
            grpc_pass grpc://srvadd:10116;
        }

        location /password-reset {
            proxy_pass http://flask:8000;
        }
    }

1 个答案:

答案 0 :(得分:0)

hm,可以在同一Nginx服务器下同时服务http和http2通信。这是一个对我们有用的示例nginx.conf

server {
    listen 8080;
    listen 8443 http2;
    server_name localhost;

    location / {
      grpc_pass localhost:9090;
    }
  }

我不确定,但是端口80是否可以与http2一起使用?我认为对于http2可以使用的端口号可能会有一些限制?

另一个涉及更多的示例

  server {
    listen [::]:$0;
    listen [::]:$1 http2;
    server_name localhost;
    location /grpc.gateway.testing.EchoService/ {
      grpc_pass localhost:$2;
      grpc_channel_reuse on;
      grpc_ssl $3;
      grpc_ssl_target_name_override $4;
      grpc_ssl_pem_root_certs "$5";
      grpc_ssl_pem_private_key "$6";
      grpc_ssl_pem_cert_chain "$7";
      grpc_client_liveness_detection_interval 10ms;
      add_header Access-Control-Allow-Origin * always;
    }
  }
相关问题