Я недавно настроил вход nginx в GKE, и каким-то образом вход не может правильно переписать путь для мини-приложений (laravel lumen) внутри целевых модулей для разрешения.Приложения имеют функцию под названием «тестирование», которая будет печатать «тестирование одного» и «тестирование двух» для «альфа» и «бета».функция должна быть доступна через http://<base_url>/public/testing
.
Внутри входного yaml определены два пути: /alpha/*
и /beta/*
, каждый из которых будет указывать на две службы lumen-alpha-svc
и lumen-beta-svc
.У меня нет домена для этого входа, поэтому я оставил «host» во входе неопределенным, и вход все еще должен быть доступен по внешнему IP-адресу, предоставленному GKE для входа.
Я проверил входобращаясь к http://<external-ip-address>/alpha/public/testing/
по обоим входным путям, я получил ошибку HTTP 404, и я все еще путаюсь с этим.Итак, я настроил новый сервис под названием path-check-svc
и добавил новый путь /check/*
во входе, который будет указывать на сервис.Затем служба указывает на программу nodejs, которая напечатает путь URL.Я проверил путь, открыв http://<external-ip-address>/check/something/
, и nodejs вернул URL-путь /check/something/
.Это делает меня еще более запутанным.Поскольку входной путь определяется с помощью /check/*
для перенаправления его в path-check-svc, разве это не оставит путь для перехваченной программы только до /something/
?Это заставило меня понять, что именно это вызвало ошибку http 404 в приложениях lumen, поскольку она не смогла разрешить http://<external-ip-address>/alpha/public/testing/
, поскольку приложения lumen не знают, что такое /alpha/
.
Так какЯ определил вход, чтобы URL-адрес можно было переписать в действительный URL-адрес, чтобы приложения могли его перехватить.Спасибо.
Это файл yaml для kubernetes
apiVersion: apps/v1
kind: Deployment
metadata:
name: lumen-alpha
labels:
app: lumen-alpha
spec:
selector:
matchLabels:
app: lumen-alpha
template:
metadata:
labels:
app: lumen-alpha
spec:
containers:
- image: husnurrsyafni/lumen-test-alpha:php
name: lumen-test-alpha
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: lumen-beta
labels:
app: lumen-beta
spec:
selector:
matchLabels:
app: lumen-beta
template:
metadata:
labels:
app: lumen-beta
spec:
containers:
- image: husnurrsyafni/lumen-test-beta:php
name: lumen-test-beta
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: lumen-alpha-svc
spec:
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: lumen-alpha
---
apiVersion: v1
kind: Service
metadata:
name: lumen-beta-svc
spec:
type: NodePort
ports:
- protocol: TCP
port: 80
targetPort: 80
selector:
app: lumen-beta
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: lumen-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- http:
paths:
- path: /alpha/*
backend:
serviceName: lumen-alpha-svc
servicePort: 80
- path: /beta/*
backend:
serviceName: lumen-beta-svc
servicePort: 80