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

2021-11-06 19:55:49 +08:00
 yestodayHadRain
今天朋友问了一个问题,没怎么想明白。

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

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

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


这个有了解的大佬解答下吗
1050 次点击
所在节点    问与答
6 条回复
ladypxy
2021-11-06 20:15:45 +08:00
服务器有 ip 白名单啊,只允许 cdn ip 访问,这是最基本的
yestodayHadRain
2021-11-06 21:15:46 +08:00
@ladypxy 那为什么我直接 telnet 服务器公网 ip 的 80 端口可以打通呢,而且访问是 404 也不是 403
adoal
2021-11-06 22:49:16 +08:00
http header “Host”
eason1874
2021-11-06 23:59:03 +08:00
因为 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
2021-11-07 01:05:15 +08:00
你本地配置个 host ,把域名 解析成 你的服务器的 ip ,然后再访问试试
yestodayHadRain
2021-11-07 09:34:54 +08:00
@akira
@eason1874
@adoal 谢谢三位大佬,已经搞清楚了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/813536

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX