在函数计算中添加CDN后,HTTP_HOST 获取不到真实地址的原因可能是 CDN 配置错误、请求头无法正确附加到响应头或请求头缺少必要信息。以下是几种可能解决方案:
以下是几种解决方案:
Caching:
Disable: true
Default TTL: 0
Disable:true表示禁用缓存,这样就可以强制使用源站的IP地址。Default TTL: 0 设置缓存时间为0,这样就不会被缓存。
这种方法适用于无法修改源服务器配置的场合。
以下是具体实施建议:
为了确保 CDN 加速功能正常,建议你在使用 CDN 后重新设置源服务器的静态文件配置。
在请求中使用 x-forwarded-for
和 x-real-ip
请求头,并包含源服务器 IP 地址。这样就可以绕过 CDN 的缓存功能,直接访问源站。
具体例子:
POST /yourapi/fetch/ HTTP/1.1
Connection: keep-alive
x-forwarded-for: host IP
host: yourdomain.com
x-real-ip: host IP
Content-Length: 0
为了能够获得真实的 IP 地址,可以手动配置 /etc/nginx/yourconf.d/*
文件,该文件包含 nginx 配置文件及所有源服务器上使用到的静态文件。
具体例子:
请使用您自己的域名替换 yourdomain.com
和 x-forwarded-for
中的实际值。
server
location ~* \.(jpg|jpeg|png|gif)$
location /api
}
希望这些解决方案可以帮助您解决这个错误,如果遇到更具体的问题,请提供更多信息,我可以针对具体情况提供更具体的解决方案。
领取专属 10元无门槛券
手把手带您无忧上云