在 caddy + tls + websocket 的配置下,网上大部分教程都建议如下的配置:

  proxy /ray localhost:10000 {
    websocket
    header_upstream -Origin
  }

不太明白 header_upstream -Origin 的作用是什么,经过测试,该行是否存在都不影响 websocket 的正常工作。

类似的,以下两种配置,也不影响 websocket 的正常工作。那么, transparent 的作用究竟是什么?

  proxy /ray localhost:10000 {
    websocket
  }
  proxy /ray localhost:10000 {
    websocket
    transparent 
  }

Q:

文档说得很清楚

header_upstream sets headers to be passed to the backend. The field name is name and the value is value. This option can be specified multiple times for multiple headers, and dynamic values can also be inserted using request placeholders. By default, existing header fields will be replaced, but you can add/merge field values by prefixing the field name with a plus sign (+). You can remove fields by prefixing the header name with a minus sign (-) and leaving the value blank.

-Origin就是去掉Origin头,这么做显然是为了避免服务器对请求的同源检查(实际上会不会检查先不管)。这样你就可以随便设置websocket的header而不会被拒绝了。如果客户端不设置websocket的Origin头,这个配置自然用不到。

 

相关阅读:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Origin

VIA.https://github.com/v2ray/v2ray-core/issues/1273

最后修改:2019 年 12 月 08 日 08 : 53 AM