Kubernetes配置NGINX Ingress Controller访问指定URL返回404问题求助
问题根因
你的请求没有转发到K8s的NGINX Ingress Controller,本地运行的IIS服务占用了80端口,优先响应了ticketing.com的请求,所以返回IIS的404页面。
解决方案步骤
1. 释放80端口,停止IIS服务
- 按下
Win+R组合键,输入services.msc打开系统服务管理器 - 找到
World Wide Web Publishing Service服务,右键点击「停止」 - 将该服务的启动类型修改为「手动」,避免开机自动启动占用端口
- 执行以下命令确认80端口无其他进程占用:
netstat -ano | findstr :80
如果输出为空,说明80端口已释放。
2. 验证请求连通性
直接访问http://ticketing.com/api/users/currentuser,此时请求会被Ingress Nginx接收并转发到后端auth服务,正常会返回Hi there。
可选:问题复现排查步骤
如果执行上述操作后仍有问题,按以下步骤定位:
- 验证后端服务本身可正常访问,在集群内启动临时测试Pod:
kubectl run -it --rm debug --image=busybox -- sh # 进入Pod后执行 wget -qO- http://auth-srv:3000/api/users/currentuser
如果返回Hi there,说明业务服务和ClusterIP服务配置正常,问题出在流量入口层。
2. 查看Ingress Nginx控制器日志,排查转发错误:
kubectl logs -n ingress-nginx ingress-nginx-controller-5c8d66c76d-89zhp
HTTPS 502问题说明
你当前未配置Ingress的TLS证书和HTTPS规则,直接发起HTTPS请求会因为Ingress没有对应SSL配置返回502错误,如需使用HTTPS访问,需要先生成自签证书,在Ingress配置中补充tls字段绑定域名和证书即可。
不想停止IIS的替代方案
修改Ingress Nginx的Service配置,将80端口映射到本地8080端口、443映射到8443端口,避免和IIS抢占端口,访问时使用http://ticketing.com:8080/api/users/currentuser即可。
内容的提问来源于stack exchange,提问作者sycamore55
相关产品推荐
相关产品推荐

