AKS部署Nginx:curl返回200但浏览器访问超时求助
AKS部署Nginx后浏览器访问超时但curl正常的排查方案
问题场景
在AKS上部署Nginx实例,通过LoadBalancer Service暴露外部IP xx.yy.zz.30,使用curl -I xx.yy.zz.30能正常返回HTTP/1.1 200 OK,但浏览器访问该IP时超时。相关资源信息如下:
Service状态
➜ kgs -n nginx NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nginx-service LoadBalancer 10.0.24.78 xx.yy.zz.30 80:31755/TCP 61s
Kubernetes资源配置
apiVersion: v1 kind: Namespace metadata: name: nginx --- apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment namespace: nginx labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.23.1 ports: - name: web-port containerPort: 80 --- apiVersion: v1 kind: Service metadata: name: nginx-service namespace: nginx labels: app: nginx spec: type: LoadBalancer selector: app: nginx ports: - name: web-port protocol: TCP port: 80 targetPort: web-port
排查与解决步骤
- 确认浏览器访问协议:部分浏览器会自动为IP地址添加
https://前缀,尝试手动输入http://xx.yy.zz.30访问,避免因默认访问未暴露的443端口导致超时。 - 清除浏览器缓存/使用隐私窗口:浏览器缓存或插件可能干扰请求,清空缓存后重试,或打开隐私/无痕窗口访问,排除缓存和插件影响。
- 模拟浏览器请求头测试:curl默认发送的请求头极简,而浏览器会携带大量头信息。用curl模拟浏览器请求,验证是否是请求头导致的拦截:
如果该命令也超时,说明中间层(如防火墙、Nginx配置)对特定请求头有拦截,需要进一步排查。curl -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" xx.yy.zz.30 - 检查网络安全组(NSG)规则:登录Azure门户,查看AKS集群对应的NSG入站规则,确保允许浏览器所在客户端IP访问80端口。如果curl和浏览器不在同一机器,需确认客户端IP段未被NSG拦截。
- 排查Kubernetes NetworkPolicy:检查nginx命名空间下是否存在NetworkPolicy,限制了外部流量访问:
如果存在限制外部访问的策略,需调整规则允许LoadBalancer或客户端IP的流量。kubectl get networkpolicy -n nginx - 检查负载均衡器健康状态:查看Azure负载均衡器的后端池健康状态,确认Nginx Pod的80端口健康检查正常。执行以下命令查看Service详情:
确保健康检查配置正确,后端Pod处于健康状态。kubectl describe service nginx-service -n nginx
内容的提问来源于stack exchange,提问作者adacho
相关产品推荐
相关产品推荐

