如何配置Nginx Ingress将accounts.example.com请求转发到Pod的/accounts子路径
Nginx Ingress 路径前缀自动拼接配置方案
你可以通过Nginx Ingress的rewrite-target注解实现需求,完整配置示例如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: accounts-ingress annotations: # 核心配置:指定转发到后端的目标路径规则 nginx.ingress.kubernetes.io/rewrite-target: /accounts/$1 spec: ingressClassName: nginx # 请替换为你集群实际使用的IngressClass名称 rules: - host: accounts.example.com http: paths: - path: /(.*) pathType: Prefix backend: service: # 请替换为对接目标Pod的Service名称 name: accounts-service port: # 请替换为Service暴露的端口号 number: 80
注意:Ingress无法直接对接Pod,请先创建匹配目标Pod标签的ClusterIP类型Service,再替换上述配置中的Service信息。
配置逻辑说明
- 路径规则
path: /(.*)会捕获accounts.example.com域名下所有请求的路径部分,存入捕获组$1 rewrite-target注解会将捕获到的路径拼接到/accounts/之后,再转发到后端Pod- 匹配效果:
- 用户请求
accounts.example.com/test→ 转发到Pod的/accounts/test - 用户请求
accounts.example.com/api/v2/user/info→ 转发到Pod的/accounts/api/v2/user/info
- 用户请求
生效验证
配置提交到集群后,执行以下命令查看规则是否正常加载:
kubectl describe ingress accounts-ingress
无报错即可直接请求域名验证转发效果。
内容的提问来源于stack exchange,提问作者Markus
相关产品推荐
相关产品推荐

