我有两个服务,一个是 Nginx 服务(和部署),port 80
它链接到一个入口 Nginx 控制器,另一个是 WordPress 服务(部署),它在 中有一个 Nginx 服务器port 5050
。
因此,我有两个具有不同 Nginx 服务器的服务,并且我需要在其中创建第三个服务phpmyadmin
,并且我必须在不同的端口创建另一个 Nginx 服务器port 5000
。
这就是为什么我问自己,是否可以有一个与我的所有应用程序(phpmyadmin,wordpress,...)链接的单一 Nginx 服务。
我搜索了网络,找到了术语“前端层”和“后端层”,但我不知道如何使用它们,或者是否有其他解决方案。如果有人能用简单的术语向我解释一下就好了。
我所有的docker容器都是自己构建的。
编辑:入口 yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
namespace: default
name: ingress-controller
spec:
backend:
serviceName: my-nginx
servicePort: 80
答案1
正如我之前在评论中提到的,你必须使用入口重定向请求。我假设您的服务和部署已正确连接。作为补充信息,如果您对当前入口存在一些问题,我建议使用 helm 进行部署Nginx。
Ingress
也有充分的记录Kubernetes 文档。
您需要paths
像以下示例一样指定。有关的所有必要信息都rewrite
可以找到这里。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: test.local
http:
paths:
- path: /wordpress
backend:
serviceName: wordpress-service
servicePort: <your service port>
- path: /myphpadmin
backend:
serviceName: myphpadmin-service
servicePort: <your service port>
- path: /anotherservice
backend:
serviceName: another-service
servicePort: <another service port>
现在,如果您愿意,例如,$ curl test.local/wordpress
您将得到wordpress
服务的响应。我解释了类似的Ingress
事情此主题。
作为附加信息,请记住还有更多Ingress
类型(Nginx Ingress、GKE Ingress(如果您使用 GKE 云)等)