V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yestodayHadRain
V2EX  ›  问与答

关于 web 应用防火墙回源的问题

  •  
  •   yestodayHadRain · 2021-11-06 19:55:49 +08:00 via iPhone · 1002 次点击
    这是一个创建于 900 天前的主题,其中的信息可能已经有所发展或是发生改变。
    今天朋友问了一个问题,没怎么想明白。

    服务器在阿里云上,waf 也是阿里云的。把域名解析到了 waf 上然后在 waf 里通过 ip 回源到服务器。

    最后,神奇的来了。通过域名可以正常访问到网站,但是通过服务器的 ip 就访问不到(404)。

    有个地方想不明白,如果是因为 web 容器里设置了只能域名访问 那为什么 waf 回源里也是通过 ip 访问的 waf 就可以访问到呢。尝试过本地 telnet 服务器的 80 端口是通的,也不是服务器限制了 ip 访问。


    这个有了解的大佬解答下吗
    6 条回复    2021-11-07 09:34:54 +08:00
    ladypxy
        1
    ladypxy  
       2021-11-06 20:15:45 +08:00 via iPhone
    服务器有 ip 白名单啊,只允许 cdn ip 访问,这是最基本的
    yestodayHadRain
        2
    yestodayHadRain  
    OP
       2021-11-06 21:15:46 +08:00 via iPhone
    @ladypxy 那为什么我直接 telnet 服务器公网 ip 的 80 端口可以打通呢,而且访问是 404 也不是 403
    adoal
        3
    adoal  
       2021-11-06 22:49:16 +08:00 via iPhone   ❤️ 1
    http header “Host”
    eason1874
        4
    eason1874  
       2021-11-06 23:59:03 +08:00   ❤️ 1
    因为 WAF 回源的时候把你的域名添加到了 HTTP Request headers 的 host ,所以你的 Web Server 可以准确定位到你配置好的 Virtual Host

    你在浏览器直接打开 IP ,头部信息里没有 host ,就定位不到 vhost ,所以返回默认 vhost 的 404

    如果你把服务器默认 vhost 配置删掉,只留你网站一个 vhost ,那么请求没有 host 或者是任意 host 都会定位到你那个网站的 vhost 配置,访问到网站内容

    端口通不通跟 Web Server 能不能定位资源没关系,端口通的但你 host 不对,也会定位不到。你想在 telnet 访问到你的网站资源,打开 telnet 之后输入两行文本模拟 HTTP 请求就可以:

    GET / HTTP/1.1
    Host: 你的域名
    akira
        5
    akira  
       2021-11-07 01:05:15 +08:00   ❤️ 1
    你本地配置个 host ,把域名 解析成 你的服务器的 ip ,然后再访问试试
    yestodayHadRain
        6
    yestodayHadRain  
    OP
       2021-11-07 09:34:54 +08:00 via iPhone
    @akira
    @eason1874
    @adoal 谢谢三位大佬,已经搞清楚了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1252 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:23 · PVG 07:23 · LAX 16:23 · JFK 19:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.