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

为什么设置了流量统计,但是请求:域名/traffic 一直显示404 page not found,还需要什么额外的操作吗? #964

Closed
sfindme opened this issue Mar 5, 2024 · 10 comments

Comments

@sfindme
Copy link

sfindme commented Mar 5, 2024

我是刚刚使用的,对比其他的,真的很稳定和很好用,感谢大佬分享这么好的代码。

使用过程中我有个问题:
为什么设置了流量统计,但是请求:域名/traffic 一直显示404 page not found。
已经是验证通过了,如果验证不通过,会提示:unauthorized

这是我的服务器配置文件:

listen: :443

以下 acme 和 tls 字段,二选一

有域名部署的选择 acme ,无域名的选择 tls

选择 acme,必须注释掉 tls,反之一样

acme:
domains:
- 这是我的域名 # 域名
email: your@email.com # 邮箱,格式正确即可

auth:
type: http
http:
url: 验证地址,这里我已经能认证了,并且返回了对应的用户信息
insecure: false
command: /etc/some_command

//这里我也开启了监听地址,并且也是能监听到的,也通过授权authorized了
trafficStats:
listen: :9999
secret: 1234

masquerade:
type: proxy
proxy:
url: https://bing.com # 伪装网站
rewriteHost: true

以上是可以正常使用的,就是请求接口获取不到流量统计的信息
请求:域名/traffic
一直显示404 page not found。

请问是还需要什么额外的操作吗?
再次感谢大佬。

@haruue
Copy link
Collaborator

haruue commented Mar 5, 2024

不是请求 域名/traffic

要获取流量统计, 应该直接请求服务器上 trafficStats.listen 的端口。 不是让你通过代理访问某个地址获取, 也不是通过访问顶层 listen 选项配置的端口获取。

例如, Hysteria 服务端配置成

trafficStats:
  listen: 127.0.0.1:9999 
  secret: ed9da2b7-676d-49d0-927a-eb78f319992b

在运行 Hysteria 服务端的机器上

$ curl -vv -H 'Authorization: ed9da2b7-676d-49d0-927a-eb78f319992b' http://127.0.0.1:9999/traffic
*   Trying 127.0.0.1:9999...
* Connected to 127.0.0.1 (127.0.0.1) port 9999
> GET /traffic HTTP/1.1
> Host: 127.0.0.1:9999
> User-Agent: curl/8.4.0
> Accept: */*
> Authorization: ed9da2b7-676d-49d0-927a-eb78f319992b
> 
< HTTP/1.1 200 OK
< Content-Type: application/json; charset=utf-8
< Date: Tue, 05 Mar 2024 05:12:49 GMT
< Content-Length: 2
< 
* Connection #0 to host 127.0.0.1 left intact
{}

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

感谢大佬答疑解惑,是只能在本机上获取是吧?如果要持久化,那还是需要做一个程序部署在机器上,然后获取流量信息之后,把他存入远程数据库中,是这样吗?

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

trafficStats:
listen: 127.0.0.1:9999
secret: ed9da2b7-676d-49d0-927a-eb78f319992b

能不能把127.0.0.1:9999 改成:我的web网站的地址:80,这样呢?直接把数据发送到我的接口上

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

好的,了解了,感谢,我自己在本地服务器机器上写一个定时获取的发送到自己的接口上

@haruue
Copy link
Collaborator

haruue commented Mar 5, 2024

能不能把127.0.0.1:9999 改成:我的web网站的地址:80,这样呢?直接把数据发送到我的接口上

Hysteria 2 不支持推送式的流量统计 API, trafficStats.listen 是监听一个 TCP 端口, 在这个端口上启动 HTTP 服务, 提供 文档 所述的统计 API。 没有「将数据发送到指定接口」的功能。

如果需要推送式流量统计, 需要额外编写程序请求 Hysteria 流量统计 API 并进行发送。

请参考 Hysteria 2 的 流量统计 API 文档, 是中文的。

是只能在本机上获取是吧?

不一定要本机上获取, 可以将 trafficStats.listen 设置为一个非 127.0.0.1 的地址, 例如使用下面的配置文件, 就可以直接通过 http://服务器公网IP:9999/traffic 访问流量统计。

trafficStats:
  listen: :9999
  secret: ed9da2b7-676d-49d0-927a-eb78f319992b

请注意流量统计端口的请求不加密, 直接通过公网访问会将密码在公网上明文传输产生安全隐患。 对于一般用户, 我个人建议监听环回地址 127.0.0.1。 对于机场用户, 可以考虑先用 WireGuard 之类的 VPN 软件把所有节点组网互通, 然后将 trafficStats.listen 设置为 WireGuard 接口的 IP 地址, 控制节点通过 WireGuard 访问 Hysteria 的流量统计 API。

如果要持久化,那还是需要做一个程序部署在机器上,然后获取流量信息之后,把他存入远程数据库中,是这样吗?

是的。 如果要持久化, 是必须在获取流量信息之后, 自行存入数据库的。 Hysteria 统计的流量会在每一次服务端重启或者访问 /traffic?clear=1 后重置。

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

不一定要本机上获取, 可以将 trafficStats.listen 设置为一个非 127.0.0.1 的地址, 例如使用下面的配置文件, 就可以直接通过 http://服务器公网IP:9999/traffic 访问流量统计。

上面的说的,我用http://服务器公网IP:9999/traffic 访问流量统计。提示404 page not found

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

配置要写成
trafficStats:
listen: 服务器公网IP:9999
secret: ed9da2b7-676d-49d0-927a-eb78f319992b

这样吗?

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

可以了,不好意思,我地址打错了,非常感谢。

@sfindme
Copy link
Author

sfindme commented Mar 5, 2024

感动落泪,真的太感谢您的帮助了

@sfindme sfindme closed this as completed Mar 5, 2024
@us254
Copy link

us254 commented Mar 29, 2024

@sfindme #972

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

3 participants