You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx配置prerender.io报could not be resolved(110超时)是什么原因?

Prerender.io接入502错误排查与解决思路

错误根因分析

  • 容器DNS配置失效:你在Nginx配置中硬编码公网DNS(8.8.8.8),但多数企业内网、本地Docker环境会封禁公网DNS的UDP 53端口请求,导致service.prerender.io域名解析超时,触发110报错。
  • Prerender请求协议错误:当前prerender.io服务已强制HTTPS访问,你配置的proxy_pass http://$prerender会被301重定向,Nginx代理默认不跟随重定向导致请求失败。
  • 本地测试场景限制:prerender.io是公网渲染服务,需要能公网访问你的站点才能完成渲染,本地测试时直接请求localhost,prerender服务无法访问你本地的应用,也会导致请求异常。

解决步骤

1. 修改Nginx配置

将原配置中resolver、proxy_pass相关配置替换为以下内容:

# 替换公网DNS为Docker内置DNS,继承宿主机DNS配置
resolver 127.0.0.11 valid=30s;
resolver_timeout 60s;

if ($prerender = 1) {
    set $prerender "service.prerender.io";
    rewrite .* /$scheme://$host$request_uri? break;
    # 开启HTTPS代理与SNI支持
    proxy_ssl_server_name on;
    proxy_pass https://$prerender;
}

同时确认X-Prerender-Token已替换为你在prerender.io平台申请的有效token。

2. 容器网络连通性验证

容器启动后进入容器内部测试prerender服务连通性:

# 进入容器
docker exec -it <你的容器名称> sh
# 测试prerender服务请求(替换为你的实际token、公网可访问的站点地址)
curl https://service.prerender.io/https://你的公网站点地址 -H "X-Prerender-Token: 你的实际TOKEN"

如果该请求无法正常返回渲染后的HTML,先排查容器出口网络、防火墙、企业代理规则。

3. 本地测试适配

如果在本地环境测试,需要使用内网穿透工具将本地80端口暴露到公网,使用公网域名发起测试请求:

curl -A Googlebot http://你的公网穿透域名

验证方案

所有配置修改完成后,重建Docker镜像并启动容器,再次发起爬虫模拟请求,即可正常返回渲染后的HTML内容。


内容的提问来源于stack exchange,提问作者Kalusan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 14:12:00