Skip to content
This repository was archived by the owner on Mar 17, 2024. It is now read-only.

[Bug] gRPC回落到nginx无法正确处理POST请求 #251

@HeXis-YS

Description

@HeXis-YS

Describe the bug【描述 bug】
在verysimple中配置通过gRPC回落到nginx (h2c)时,无法正确处理POST请求。看nginx日志似乎是verysimple没有正确处理参数,把参数省略掉了。

To Reproduce【如何复现该bug】
按所给出的配置文件运行verysimple,nginx和webd。
打开浏览器登录webd。

Expected behavior【预期的行为】
verysimple正确处理回落的POST请求,登录成功。

Envs (please complete the following information):【系统环境】
Clear Linux 38630, Kernel 6.2.1
verysimple 1088b27
nginx 1.20.2

Config file 【配置文件,客户端服务端配置都提供】

verysimple服务端
[app]
loglevel = 0
logfile = "/root/tmp/vs_log"

[[listen]]
tag = "vless-grpc-tls-in"
protocol = "vlesss"
uuid = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
ip = "0.0.0.0"
port = 9443
version = 0
advancedLayer = "grpc"
path = "grpc_path"
fallback = "/dev/shm/h2c.sock"
sniffing.enabled = false
cert = "/usr/local/etc/xray/cert.pem"
key = "/usr/local/etc/xray/cert.key"
extra.tls_minVersion = "1.3"
alpn = ["h2"]

[[listen]]
tag = "vless-tcp-in"
protocol = "vlesss"
uuid = "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
ip = "0.0.0.0"
port = 8443
version = 0
fallback = "/dev/shm/h2c.sock"
sniffing.enabled = false
cert = "/usr/local/etc/xray/cert.pem"
key = "/usr/local/etc/xray/cert.key"
extra.tls_minVersion = "1.3"
alpn = ["h2"]
nginx.conf
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 2048;
        multi_accept on;
        use epoll;
}

http {
        sendfile on;
        tcp_nopush on;
        tcp_nodelay on;
        keepalive_timeout 15;
        types_hash_max_size 2048;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ssl_prefer_server_ciphers on;

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

        gzip off;

        include /etc/nginx/conf.d/*.conf;
        include /etc/nginx/sites-enabled/*;
}

server {
        listen unix:/dev/shm/h2c.sock http2;

        client_header_timeout 52w;
        keepalive_timeout 52w;

        location / {
                proxy_pass http://127.0.0.1:80/;
                proxy_http_version 1.1;
        }
}

Debug Log 【Debug日志, 客户端 和 服务端 的 日志 都提供】

正常回落verysimple日志
{"L":"INFO ","T":"230301 023936.128","M":"Program started","loglvl":0}
{"L":"INFO ","T":"230301 023936.131","M":"zap log init complete.","logfile":"/root/tmp/vs_log"}
{"L":"INFO ","T":"230301 023936.134","M":"verysimple v1.2.5-1088b279ef77e4c34405ead8913588aaa83f425e, go1.20.1 linux amd64, with advLayer packages: [grpcSimple ws] \n"}
{"L":"INFO ","T":"230301 023936.134","M":"Working at","dir":"/root/tmp"}
{"L":"DEBUG","T":"230301 023936.135","M":"All Given Flags","flags":{"c":"my string representation"}}
{"L":"INFO ","T":"230301 023936.135","M":"Options","Log Level":"debug","UseReadv":true}
{"L":"INFO ","T":"230301 023936.137","M":"Starting..."}
{"L":"INFO ","T":"230301 023936.140","M":"Listening","tag":"vless-grpc-tls-in","protocol":"tls+grpc+vless","listen_addr":"0.0.0.0:9443","defaultClient":"dual+direct","dial_addr":""}
{"L":"INFO ","T":"230301 023936.143","M":"Listening","tag":"vless-tcp-in","protocol":"tls+vless","listen_addr":"0.0.0.0:8443","defaultClient":"dual+direct","dial_addr":""}
{"L":"INFO ","T":"230301 023947.603","M":"New Accepted Conn","connid":114949,"from":"1.2.3.4:60860","handler":"tls+vless://0.0.0.0:8443#vless-tcp-in"}
{"L":"WARN ","T":"230301 023947.911","M":"Failed handshakeInserver","connid":114949,"handler":"0.0.0.0:8443","client RemoteAddr":"1.2.3.4:60860","error":" [ Vless Invalid version  , Detail: invalid data, Data: 80 ] , with Buffer,len 148"}
{"L":"DEBUG","T":"230301 023947.912","M":"Fallback to default setting","addr":"/dev/shm/h2c.sock"}
{"L":"DEBUG","T":"230301 023947.912","M":"Default Route","connid":114949,"source":"/dev/shm/h2c.sock","client":"dual+direct","addr":""}
{"L":"INFO ","T":"230301 023947.912","M":"Request","connid":114949,"Fallback from":"1.2.3.4:60860","Target":"unix://%2Fdev%2Fshm%2Fh2c.sock","through":"dual+direct://"}
{"L":"DEBUG","T":"230301 023947.912","M":"handshake client with first payload","connid":114949,"len":148}
{"L":"DEBUG","T":"230301 023947.913","M":"TryCopy","id":114949,"from":"*net.UnixConn","->":"*tlsLayer.conn"}
{"L":"DEBUG","T":"230301 023947.913","M":"copying with readv","id":114949}
{"L":"DEBUG","T":"230301 023947.913","M":"TryCopy","id":114949,"from":"*tlsLayer.conn","->":"*net.UnixConn"}
{"L":"DEBUG","T":"230301 023947.913","M":"copying with classic method","id":114949}
{"L":"INFO ","T":"230301 024018.729","M":"Program got close signal."}
{"L":"INFO ","T":"230301 024018.730","M":"Stopping..."}
{"L":"DEBUG","T":"230301 024018.730","M":"netLayer.loopAccept, listener got closed","error":"accept tcp [::]:9443: use of closed network connection"}
{"L":"DEBUG","T":"230301 024018.730","M":"netLayer.loopAccept, listener got closed","error":"accept tcp [::]:8443: use of closed network connection"}
异常回落verysimple日志
{"L":"INFO ","T":"230301 024115.849","M":"Program started","loglvl":0}
{"L":"INFO ","T":"230301 024115.853","M":"zap log init complete.","logfile":"/root/tmp/vs_log"}
{"L":"INFO ","T":"230301 024115.854","M":"verysimple v1.2.5-1088b279ef77e4c34405ead8913588aaa83f425e, go1.20.1 linux amd64, with advLayer packages: [grpcSimple ws] \n"}
{"L":"INFO ","T":"230301 024115.855","M":"Working at","dir":"/root/tmp"}
{"L":"DEBUG","T":"230301 024115.855","M":"All Given Flags","flags":{"c":"my string representation"}}
{"L":"INFO ","T":"230301 024115.855","M":"Options","Log Level":"debug","UseReadv":true}
{"L":"INFO ","T":"230301 024115.857","M":"Starting..."}
{"L":"INFO ","T":"230301 024115.860","M":"Listening","tag":"vless-grpc-tls-in","protocol":"tls+grpc+vless","listen_addr":"0.0.0.0:9443","defaultClient":"dual+direct","dial_addr":""}
{"L":"INFO ","T":"230301 024115.862","M":"Listening","tag":"vless-tcp-in","protocol":"tls+vless","listen_addr":"0.0.0.0:8443","defaultClient":"dual+direct","dial_addr":""}
{"L":"INFO ","T":"230301 024124.310","M":"New Accepted Conn","connid":998747,"from":"1.2.3.4:33558","handler":"tls+grpc+vless://0.0.0.0:9443/grpc_path#vless-grpc-tls-in"}
{"L":"WARN ","T":"230301 024124.576","M":"grpc Server got wrong path","path":"/.auth"}
{"L":"INFO ","T":"230301 024124.578","M":"GrpcSimple will fallback","path":"/.auth","method":"POST","raddr":"1.2.3.4:33558"}
{"L":"DEBUG","T":"230301 024124.578","M":"Fallback to default setting","addr":"/dev/shm/h2c.sock"}
{"L":"DEBUG","T":"230301 024124.584","M":"TryCopy","id":998747,"from":"http2.noBodyReader","->":"*netLayer.IOWrapper"}
{"L":"DEBUG","T":"230301 024124.584","M":"copying with classic method","id":998747}
{"L":"INFO ","T":"230301 024130.567","M":"Program got close signal."}
{"L":"INFO ","T":"230301 024130.567","M":"Stopping..."}
{"L":"DEBUG","T":"230301 024130.568","M":"netLayer.loopAccept, listener got closed","error":"accept tcp [::]:9443: use of closed network connection"}
{"L":"DEBUG","T":"230301 024130.568","M":"netLayer.loopAccept, listener got closed","error":"accept tcp [::]:8443: use of closed network connection"}

Other 【其他】
由于超出了Github Issue的长度限制,nginx日志将在下面提供

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions