社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  NGINX

使用通配符子域配置Nginx入口上游Vhost

Nick • 1 年前 • 229 次点击  

我有一个EKS集群,它具有 ingress-nginx 控制器已部署。

我使用nginx代理外部服务,但希望部署一个Ingress对象来处理跨多个主机的路由。然而,上游vhost似乎只能使用一个完全限定的主机名。

apiVersion: v1
kind: Service
metadata:
  name: httpbin-foobar
  namespace: default
  labels:
    app.kubernetes.io/name: httpbin-svc
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalName: httpbin.upstream.example.com
  type: ExternalName
---
apiVersion: v1
kind: Service
metadata:
  name: httpbin2-foobar
  namespace: default
  labels:
    app.kubernetes.io/name: httpbin2-svc
    app.kubernetes.io/part-of: ingress-nginx
spec:
  externalName: httpbin2.upstream.example.com
  type: ExternalName
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nginx-ingress-tls
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: '/'
    nginx.ingress.kubernetes.io/upstream-vhost: 'httpbin.upstream.example.com'
    nginx.ingress.kubernetes.io/backend-protocol: https
    nginx.ingress.kubernetes.io/ssl-redirect: 'true'
    nginx.ingress.kubernetes.io/force-ssl-redirect: 'true'
spec:
  ingressClassName: nginx
  tls:
    - hosts:
        - '*.downstream.example.com'
      secretName: downstream-cert
  rules:
    - host: 'httpbin.downstream.example.com'
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin-foobar
                port:
                  number: 443
    - host: 'httpbin2.downstream.example.com'
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: httpbin2-foobar
                port:
                  number: 443

上面的示例适用于这两条路线,但它们都被路由到 httpbin.upstream.example.com 由于静电 upstream-vhost 我希望有办法让它匹配 *.downstream.example.com ,然后我可以在Ingress中自由添加新的主机规则,并将它们路由到正确的位置。

如果不可能,那没关系,因为我只需要创建一个新的 Ingress 每个路线,但理想情况下,我可以把它们都挤成一个Ingress。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/158955
 
229 次点击