Ботпресс за обратным прокси Nginx
Я думаю о настройке нескольких чат-ботов, как в контейнерной платформе, скажем, докере или Kubernetes, и я хотел бы иметь доступ к этим чат-ботам через обратный прокси-сервер, такой как Nginx. любая помощь приветствуется.
Мой пример сценария
У меня несколько чат-ботов, назовите их Браво, Чарли, Дельта.
- IP-адрес и порт Bravo: 10.0.0.2:8080
- IP Чарли: 10.0.0.3:8080
- IP Delta:10.0.0.4:8080
Все эти боты живут в контейнерах за прокси-сервером nginx. Теперь, если я хочу получить доступ к этим чат-ботам, я могу зайти в браузер с 10.0.0.2:8080 и использовать чат-ботов,
Если бы я мог настроить домен (альфа,org) и хотел бы получить доступ к этим чат-ботам как альфа,com/bravo или альфа,com/charlie и alpha,com/delta, как бы я смог этого добиться?
Директива Proxy pass работает только для index_html, а приложение чат-бота, похоже, имеет какой-то базовый URL-адрес, который я не могу понять. nginx возвращает пустую страницу, если я проверяю трафик. Помогите мне отладить это.
1 ответ
Вы можете использовать контроллер nginx-ingress с этим определением входа: (Но сначала вам нужно развернуть контроллер nginx-ingress в своем кластере, вы можете использовать эту ссылку)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: alpha-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: alpha.com
http:
paths:
- path: /bravo
backend:
serviceName: BravoService
servicePort: 80
- path: /charlie
backend:
serviceName: CharlieService
servicePort: 80
- path: /delta
backend:
serviceName: DeltaService
servicePort: 80 # You could also use named ports if you already named the port in the service like bravo-http-port
Это предполагает, что вы уже определили и развернули свои службы с соответствующими развертываниями. для Ex:
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
Если у вас есть еще вопросы по этому поводу, не стесняйтесь.