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

Nginx反向代理本地Docker正常,部署至K8S后报404问题排查咨询

调试思路与排查步骤

首先明确:第三方站点(google.com.hk)导致问题的概率极低——毕竟你本地Docker环境用同一个镜像能正常工作,说明核心配置逻辑是对的。问题更可能出在K8S集群的网络、路由转发或配置部署细节上,建议按以下步骤排查:

你的Nginx配置片段:

location /cs/outsession/products/ {
    proxy_buffers 16 4k;
    proxy_buffer_size 2k;
    proxy_http_version 1.1;
    proxy_pass 'https://www.google.com.hk/';
}
  • 第一步:验证Pod内的网络连通性
    先确认Nginx Pod能不能正常访问后端站点。进入Pod执行curl命令,查看完整的请求响应过程:

    kubectl exec -it <你的Nginx Pod名称> -- curl -v https://www.google.com.hk
    

    如果这一步返回正常的页面内容,说明Pod到后端的网络通路没问题;如果出现超时、无法解析或403/404,那大概率是K8S集群的出站网络受限(比如防火墙规则、集群代理配置)或DNS解析失败。

  • 第二步:检查Nginx日志定位404来源
    查看Nginx的访问日志和错误日志,明确404是Nginx自身返回的,还是后端站点返回的:

    kubectl logs <你的Nginx Pod名称>
    

    日志里如果看到类似upstream response 404的记录,说明后端确实返回了404(这时候要检查转发的URL是否正确);如果没有上游响应记录,而是Nginx直接返回404,可能是路径匹配问题或K8S的Ingress/Service没有正确把请求转发到Nginx。

  • 第三步:测试Pod内部的请求转发
    在Nginx Pod内部,直接访问自身的服务,验证配置是否生效:

    kubectl exec -it <你的Nginx Pod名称> -- curl -v http://localhost/cs/outsession/products/
    

    如果这里能正常返回google的页面,说明Nginx配置在Pod内部是正常的,问题出在K8S的Ingress或Service层;如果这里也返回404,那要检查Pod里的Nginx配置是否和本地完全一致(比如ConfigMap挂载是否正确、镜像构建时有没有漏掉配置文件)。

  • 第四步:检查Ingress/Service配置(如果使用了Ingress)
    如果是通过Ingress暴露Nginx服务,要确认:

    • Ingress的path是否和你Nginx配置的location路径匹配(比如是不是/cs/outsession/products/)
    • pathType设置是否合理(比如用Prefix而不是Exact,避免路径匹配过严)
    • Ingress的backend是否正确指向了Nginx的Service,Service的端口是否和Nginx监听的端口一致
  • 第五步:验证DNS解析
    在Nginx Pod里测试后端站点的DNS解析,确认能拿到正确的IP:

    kubectl exec -it <你的Nginx Pod名称> -- nslookup www.google.com.hk
    

    如果解析失败,说明K8S集群的DNS配置有问题,导致Nginx无法找到后端服务器的地址。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:54:21