e1732a364fed / v2ray_simple

a verysimple proxy
MIT License
528 stars 104 forks source link

不兼容 proxy_set_header ? #143

Closed SakuraSakuraSakuraChan closed 2 years ago

SakuraSakuraSakuraChan commented 2 years ago

从*ray转来的,那边传递真实IP做法是nginx配置文件里加上 proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 这两行,然后核心Accept proxyprotocal 即可

但是转来VS后呢,我在nginx里写这两行,然后配置文件里写xver=1或2,都无法成功握手,是完全不能用的状态,报错日志都是:

ERROR InServer Single AdvLayer handshake failed {"connid": 458525, "handler": "127.0.0.1:23333",> "error": " [ WS check handshake read failed , Detail: proxyproto: proxy protocol signature not present ] "}

然后看到了 https://github.com/e1732a364fed/v2ray_simple/discussions/51 发现是要写在stream模块里才行,但是一般小白都不用这块,对新手略不友好(我失败了),因此希望能兼容*ray那边的传递做法

e1732a364fed commented 2 years ago

你应该是在 websocket 里接收的 ,那个是假的,不是proxy PROTOCOl 。

换句话说,proxy_set_header 并不是使用的 proxy PROTOCOL, 而只是 在 http头部的 header部分 用一段普通 http数据标注出 ip。

我们的vs是直接使用 proxyPROTOCOL的。

e1732a364fed commented 2 years ago

另外,本作的grpcSimple是支持 X-Forward-For的

e1732a364fed commented 2 years ago

不对,我才想起,ws在最新版中也支持了 X-Forward-For 啊?

e1732a364fed commented 2 years ago

你要用 proxy_set_header 的话,那就是用 X-Forward-For, 这个是不需要再再 vs的配置文件中设置 xver的。

只有用了proxyPROTOCOL 才需要设置 xver,也就是说只有用了 我们 stream模块里 的示例配置那种 才需要。

SakuraSakuraSakuraChan commented 2 years ago

你要用 proxy_set_header 的话,那就是用 X-Forward-For, 这个是不需要再再 vs的配置文件中设置 xver的。

只有用了proxyPROTOCOL 才需要设置 xver,也就是说只有用了 我们 stream模块里 的示例配置那种 才需要。

感谢e佬~确实是我绕弯路了