Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

客户端 HTTPupgrade 自定义 headers 的 host 值无效 #3191

Closed
chika0801 opened this issue Mar 27, 2024 · 6 comments
Closed

客户端 HTTPupgrade 自定义 headers 的 host 值无效 #3191

chika0801 opened this issue Mar 27, 2024 · 6 comments

Comments

@chika0801
Copy link
Contributor

chika0801 commented Mar 27, 2024

服务端用Nginx监听443,传递到Xray的形式

服务端Nginx配置里使用了 ssl_reject_handshake 防止被扫SSL证书中的域名

服务端Xray配置

客户端Xray配置

两端Xray版本使用 9a619f9 [Add support for HTTPupgrade custom headers] 截止3.27日自编译的版本文件

当客户端windows,Xray配置中出站的address填写VPS的IP,

httpupgrade配置如下

            "streamSettings": {
                "network": "httpupgrade",
                "httpupgradeSettings": {
                    "path": "/lovelive",
                    "headers": {
                        "host": "服务端SSL证书中包含的域名"
                    }
                },
                "security": "tls",
                "tlsSettings": {
                    "serverName": "服务端SSL证书中包含的域名",
                    "fingerprint": "chrome"
                }
            },

此时客户端连接失败,原因是因为服务端Nginx配置中用了ssl_reject_handshake。但是按提交介绍此时headers自定义了host,应该能成功连接才对。

修改为如下配置,客户端连接成功

            "streamSettings": {
                "network": "httpupgrade",
                "httpupgradeSettings": {
                    "path": "/lovelive",
                    "host": "服务端SSL证书中包含的域名"
                },
                "security": "tls",
                "tlsSettings": {
                    "serverName": "服务端SSL证书中包含的域名",
                    "fingerprint": "chrome"
                }
            },
@chika0801
Copy link
Contributor Author

@Fangliding 有时间的话,看一看了

@Fangliding
Copy link
Member

@chika0801 emm 我当初以为写了才会覆盖 不知道它默认会把address填进去导致没写host也会覆盖掉header里写的host 在文档里马一下好了

@RPRX
Copy link
Member

RPRX commented Mar 27, 2024

@Fangliding 改代码,优先级应该是 host > headers > address

@Fangliding
Copy link
Member

@RPRX OK 我回去看下

@chika0801
Copy link
Contributor Author

测试了 #3193 此版本,已解决

Fangliding added a commit to Fangliding/Xray-core that referenced this issue Mar 27, 2024
arror added a commit to arror/Xray-core that referenced this issue Apr 2, 2024
* main: (24 commits)
  Add "nosni" option to send empty SNI (XTLS#3214)
  API: add Source IP Block command (XTLS#3211)
  v1.8.10
  Fix TestXrayConfig in xray_test.go
  Add separate host config for websocket
  Update proto file for websocket and httpupgrade (breaking)
  API - Add | Remove Routing Rules  (XTLS#3189)
  Fix host in headers field does not work XTLS#3191
  fix: config `burstObservatory` override
  Bump github.com/sagernet/sing from 0.3.6 to 0.3.8
  Add support for HTTPupgrade custom headers
  improve balancer_info.go
  Fix(httpupgrade): `X-Forwarded-For` header not read. (XTLS#3172)
  Allow to send through random IPv6
  Update HTTPUpgrade spelling and proto
  Chore: Clean up legacy `field` usage
  Update README.md
  Bump github.com/quic-go/quic-go from 0.41.0 to 0.42.0
  Fix HTTPUpgrade transport register
  HTTPUpgrade 0-RTT (XTLS#3152)
  ...
@alipour66m
Copy link

after this upgrade, any Cname domain does not work for ws Host, and only the domain defined in panle is working.
Can you enable multi Cname domain for host?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants