#本人就没想到直接获取ip跳过nginx拦截,AI还是有点东西的。
现象
线上机器无法通过域名访问 MR 历史服务器:
bash
curl "http://yq01-xingtian-historyserver.dmop.xxxx.com:8233/jobhistory.jsp?jobName=xxxxx"
返回 403:
html
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.8.0</center>
</body>
</html>
访问被 nginx 拦截,初步怀疑是按 Host 头做的访问控制。
排查过程
1. DNS 解析
用沙箱 DNS 解析该域名,拿到内网 IP:
bash
getent hosts yq01-xingtian-historyserver.dmop.xxxx.com
# → 10.108.19.11 yq01-xingtian-historyserver.dmop.xxx.com
2. 直连 IP 验证
拿到 IP 后用 IP:port 直连根路径:
bash
curl http://10.108.19.11:8233/
# → 200 OK
结果对比:
| 访问方式 | Host 头 | 结果 |
|---|---|---|
| 域名访问 | 带域名 | 403(nginx 拦截) |
| IP 直连 | 不带域名 | 200(可达) |
结论
- 403 是反向代理按域名/Host 头做的访问控制,真实服务本身正常。
10.108.19.11是通过内网 DNS 解析 MR 历史服务器域名得到的真实地址。- 绕过域名、直接走 IP + 端口即可访问到真实的 history server 服务。