Kubernetes Nginx反向代理后的Botpress

Kubernetes Nginx反向代理后的Botpress,kubernetes,reverse-proxy,nginx-reverse-proxy,nginx-ingress,botpress,Kubernetes,Reverse Proxy,Nginx Reverse Proxy,Nginx Ingress,Botpress,我正在考虑在集装箱化平台(比如docker或Kubernetes)中设置多个聊天机器人,我希望能够通过反向代理(如Nginx)访问这些聊天机器人。感谢您的帮助 我的示例场景 我有多个聊天机器人,让我们叫它们Bravo、Charlie、Delta Bravo的IP地址和端口为10.0.0.2:8080 查理的IP:10.0.0.3:8080 德尔塔的IP:10.0.0.4:8080 所有这些机器人都生活在nginx代理后面的容器中。 现在如果我想访问这些聊天机器人,我可以使用10.0.0.2:

我正在考虑在集装箱化平台(比如docker或Kubernetes)中设置多个聊天机器人,我希望能够通过反向代理(如Nginx)访问这些聊天机器人。感谢您的帮助

我的示例场景

我有多个聊天机器人,让我们叫它们Bravo、Charlie、Delta

  • Bravo的IP地址和端口为10.0.0.2:8080
  • 查理的IP:10.0.0.3:8080
  • 德尔塔的IP:10.0.0.4:8080
所有这些机器人都生活在nginx代理后面的容器中。 现在如果我想访问这些聊天机器人,我可以使用10.0.0.2:8080的浏览器使用聊天机器人

如果我可以设置一个域(alpha,org),并希望以alpha、com/bravo或alpha、com/charlie和alpha、com/delta的形式访问这些聊天机器人,我将如何实现这一点

Proxy pass指令只适用于index_html,而chatbot应用程序似乎有一些基本url路径,我无法确定。
如果我检查流量,nginx将返回一个空白页。帮我调试这个

您可以使用具有此入口定义的nginx入口控制器:(但首先您需要在集群上部署nginx入口控制器,您可以使用此)

这要求您已经定义并部署了具有关联部署的服务。例如:

apiVersion: v1
kind: Service
metadata:
  name: BravoService
  labels:
    app: bravo
spec:
  type: NodePort
  selector:
    app: bravo
  ports:
    - name: bravo-http-port
      protocol: TCP
      port: 80
      targetPort: bravo-port
      nodePort: 8080

---

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: bravo-deployment
  labels:
    app: bravo
spec:
  # init with 3 replicas
  replicas: 1
  selector:
    matchLabels:
      app: bravo
  template:
    metadata:
      labels:
        app: bravo
    spec:
      containers:
      - name: bravo-container
        image: my-docker-repo/project:1.0
        ports:
        - name: bravo-port
          containerPort: 8080

如果您对此有更多问题,请不要犹豫。

您可以使用具有此入口定义的nginx入口控制器:(但首先您需要在集群上部署nginx入口控制器,您可以使用此)

这要求您已经定义并部署了具有关联部署的服务。例如:

apiVersion: v1
kind: Service
metadata:
  name: BravoService
  labels:
    app: bravo
spec:
  type: NodePort
  selector:
    app: bravo
  ports:
    - name: bravo-http-port
      protocol: TCP
      port: 80
      targetPort: bravo-port
      nodePort: 8080

---

apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: bravo-deployment
  labels:
    app: bravo
spec:
  # init with 3 replicas
  replicas: 1
  selector:
    matchLabels:
      app: bravo
  template:
    metadata:
      labels:
        app: bravo
    spec:
      containers:
      - name: bravo-container
        image: my-docker-repo/project:1.0
        ports:
        - name: bravo-port
          containerPort: 8080

如果您对此有更多问题,请不要犹豫。

感谢@alireza david的回复,正如您所提到的,我已经尝试过这种基于路径的路由。但当我这样做时,我无法获取网页的内容。与css文件一样,前端的JS脚本也没有加载。我在url路径中得到一个404。如果您能够帮助剥离URI,将请求转发到容器,这将是非常棒的。哦,我必须提到,您可以使用这个重写注释。我也更新了答案。注释:nginx.ingres.kubernetes.io/rewrite-target:/感谢@alireza david的响应,正如您所提到的,我已经尝试了这种基于路径的路由。但当我这样做时,我无法获取网页的内容。与css文件一样,前端的JS脚本也没有加载。我在url路径中得到一个404。如果您能够帮助剥离URI,将请求转发到容器,这将是非常棒的。哦,我必须提到,您可以使用这个重写注释。我也更新了答案。注释:nginx.ingres.kubernetes.io/rewrite-target:/