跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • nginx 熟悉的来,求教个问题
未分類
2020 年 5 月 20 日

nginx 熟悉的来,求教个问题

nginx 熟悉的来,求教个问题

資深大佬 : balabalaguguji 17

问题

我想统计不同域名的下行流量,TCP 协议

尝试方法:

  • 从 log 中读取 我本来想输出 log,然后从 log 中读取 $bytes_sent,但是 log 中似乎无法打印出来域名,所以无法区分不同域名的流量。

  • 配置多个 server,一个域名配置一个,但是会报错,说存在相同的 IP:PORT,因为域名都是指向同个 IP nginx 熟悉的来,求教个问题

请问各位有什么好方法吗?

大佬有話說 (22)

  • 資深大佬 : AngryPanda

    试试 iptables ?

  • 資深大佬 : yghack

    ngx_req_status

  • 資深大佬 : just1

    listen 9000
    server_name 你的玉米
    域名$host 应该就可以了
    网上的配置都不能直接抄吗

  • 資深大佬 : also24

    划重点:TCP 协议

    纯粹的 TCP 通信,只有 IP 端口,没有域名,也就无从谈起根据域名统计。

  • 資深大佬 : also24

    如果不能理解这一点,可以开个 wireshark 抓包看看 HTTP 的具体结构。

    HTTP 协议虽然基于 TCP 连接,但是它是自己发送了 host 字段,所以能够被识别域名(确切来说是 HTTP1.1 )

    纯粹的 TCP 连接,靠 IP 端口建立连接,发内容就完了,并没有标记域名。

  • 主 資深大佬 : balabalaguguji

    @also24 是的没有域名

  • 主 資深大佬 : balabalaguguji

    @just1
    @yghack
    你们说的这些好像都是 http 的

  • 資深大佬 : just1

    @balabalaguguji #6 不好意思没注意看是 tcp,就如上面说的 tcp 没有标记域名所以只能监听不同端口

  • 主 資深大佬 : balabalaguguji

    @just1 不同端口就很简单的,现在就是想同个端口,感觉是做不到

  • 資深大佬 : just1

    @balabalaguguji #9 流量里不会包含域名信息,所以 nginx 也不可能知道是哪一个域名。除非自定义传输格式,在里面加上域名,但是 nginx 估计也不好实现

  • 資深大佬 : corvofeng

    TCP 协议就建一层代理,在代理服务器上统计吧, 也不需要用 Nginx 吧, 可以走 HTTP 代理

  • 資深大佬 : lxy42

    “`
    http {

    log_format main ‘$host: $bytes_sent’;

    server {
    listen 80;
    server_name a.example.com;
    access_log /var/log/nginx/a.example.com.access.log main;

    }

    server {
    listen 80;
    server_name b.example.com;
    access_log /var/log/nginx/b.example.com.access.log main;

    }
    }
    “`
    这个配置应该可以做到分别统计不同域名的流量把

  • 主 資深大佬 : balabalaguguji

    @lxy42 注意审题

  • 資深大佬 : areless

    set_by_lua,header_filter_by_lua,access_by_lua_file,这些都是可以在 server 下跑的。ngx.log 变量一个个输出到日志里试试。应该行

  • 資深大佬 : shynome

    https://github.com/vozlt/nginx-module-vts

  • 資深大佬 : hcymk2

    $hostname 不能打印域名没么?

  • 資深大佬 : ErrorMan

    @balabalaguguji nginx 是支持多域名同 IP 的,感觉是你配置多域名的配置文件写的有问题,建议检查一下

  • 資深大佬 : also24

    nginx 熟悉的来,求教个问题 已经强调是纯 TCP 流量了,还这么多人进坑的嘛……

  • 資深大佬 : shynome

    @also24 你要知道有人是不知道不清楚自己要的是什么,他既然要求了域名,那肯定是 http 同级别应用层的协议,那么通过模块插件肯定是可以做到的
    @balabalaguguji

  • 資深大佬 : lishunan246

    TCP 协议跟域名没有半毛钱关系。
    如果你是 TLS,靠 SNI 就能区分,用
    http://nginx.org/en/docs/stream/ngx_stream_ssl_preread_module.html

  • 資深大佬 : cydian

    @also24
    @balabalaguguji
    @hcymk2
    TCP 和 Nginx 有什么关系?
    我觉得主的主标题就是误导人。
    下面的回复歪了,是因为主标题来个 Nginx

    另外回复一下问题:
    我觉得不行,一个端口,TCP 不能判断域名。
    @also24 这个回复应该是正解。

  • 主 資深大佬 : balabalaguguji

    @lishunan246 感谢回复

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具