grpc_pass nginx 配置

grpc_pass nginx 配置

當我對解析器執行相同操作並設定 grpc_pass 時,它會失敗:

    `server {
        listen 443 http2:
        server _name opc.org.com;
        ssl....;
        location / {
            resolver 127.0.0.11 valid=30s;
            set $https_webui https://dev_webui;
            proxy_pass $https_webui;
        }  
        location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
            resolver 127.0.0.11 valid=30s;
            set $grpc_webui grpcs://dev_webui;
            grpc_pass $grpc_webui;
        }`

我在 grpc-client 上遇到的錯誤是:

    `[Microsoft.Extensions.Hosting.Internal.Host)
    [BackgroundServiceFaulted status   BackgroundServledGrpc.Co.RpcException
    (StatusCode="Unknown", Detail="Bad gRPC response. HTTP status code: 500")`

當您有與此類似的配置(範例)時,它可以工作

        `location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
         grpc_pass grpcs://dev_webui;
         }`

版本 nginx; nginx version: nginx/1.23.2

答案1

經過長時間的材料審查和測試,發現了錯誤。

variables如果我們在配置中使用,grpc_pass應該有一個可以監聽 grpc 的端口,在本例中 https 和 grpcs 將使用端口 443。

所以我的工作配置是:

`server {
    listen 443 http2:
    server _name opc.org.com;
    ssl....;
    location / {
        resolver 127.0.0.11 valid=30s;
        set $https_webui https://dev_webui;
        proxy_pass $https_webui;
    }  
    location /App.Room.Api.Contract.ApiService/UpdateOpcDaTags {
        resolver 127.0.0.11 valid=30s;
        set $grpc_webui grpcs://dev_webui:443;
        grpc_pass $grpc_webui;
    }`

有趣的是,對於 proxy_pass 連接埠沒有必要指定,我認為是由於 https:// 的指示

透過此配置,nginx 維護的任何堆疊都可以從可用堆疊中清除,並且 nginxhost not found in upstream重新啟動時將不會發送訊息

相關內容