import{_ as n,c as s,o as a,a as e}from"./app.3817bf4e.js";const g='{"title":"\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3\uFF08\u652F\u6301 Cloudflare CDN\uFF09","description":"","frontmatter":{},"headers":[],"relativePath":"guide/q3.md","lastUpdated":1671640155000}',t={},p=e(`

\u53CD\u5411\u4EE3\u7406 gRPC \u7AEF\u53E3\uFF08\u652F\u6301 Cloudflare CDN\uFF09

\u4F7F\u7528 Nginx \u6216\u8005 Caddy \u53CD\u5411\u4EE3\u7406 gRPC

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name data.example.com; # \u4F60\u7684 Agent \u8FDE\u63A5 Dashboard \u7684\u57DF\u540D

    ssl_certificate          /data/letsencrypt/fullchain.pem; # \u4F60\u7684\u57DF\u540D\u8BC1\u4E66\u8DEF\u5F84
    ssl_certificate_key      /data/letsencrypt/key.pem;       # \u4F60\u7684\u57DF\u540D\u79C1\u94A5\u8DEF\u5F84

    underscores_in_headers on;

    location / {
        grpc_read_timeout 300s;
        grpc_send_timeout 300s;
        grpc_socket_keepalive on;
        grpc_pass grpc://grpcservers;
    }
}

upstream grpcservers {
    server localhost:5555;
    keepalive 1024;
}
data.example.com:443 { # \u4F60\u7684 Agent \u8FDE\u63A5 Dashboard \u7684\u57DF\u540D
    reverse_proxy {
        to localhost:5555
        transport http {
            versions h2c 2
        }
    }
}

Dashboard \u9762\u677F\u7AEF\u914D\u7F6E

Agent \u7AEF\u914D\u7F6E

\u5F00\u542F Cloudflare CDN\uFF08\u53EF\u9009\uFF09

\u6839\u636E Cloudflare gRPC \u7684\u8981\u6C42\uFF1AgRPC \u670D\u52A1\u5FC5\u987B\u4FA6\u542C 443 \u7AEF\u53E3 \u4E14\u5FC5\u987B\u652F\u6301 TLS \u548C HTTP/2\u3002 \u6240\u4EE5\u5982\u679C\u9700\u8981\u5F00\u542F CDN\uFF0C\u5FC5\u987B\u5728\u914D\u7F6E Nginx \u6216\u8005 Caddy \u53CD\u5411\u4EE3\u7406 gRPC \u65F6\u4F7F\u7528 443 \u7AEF\u53E3\uFF0C\u5E76\u914D\u7F6E\u8BC1\u4E66\uFF08Caddy \u4F1A\u81EA\u52A8\u7533\u8BF7\u5E76\u914D\u7F6E\u8BC1\u4E66\uFF09\u3002

`,13),o=[p];function c(l,d,r,i,k,u){return a(),s("div",null,o)}var v=n(t,[["render",c]]);export{g as __pageData,v as default};