使用URL访问我的nodejs / react站点将显示“无效的主机头”。通过公用IP访问它会显示“默认后端-404”。
我正在将Kubernetes nginx控制器与Azure云和负载均衡器结合使用。
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myrule
namespace: mynamespace
annotations:
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt-staging
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
tls:
- hosts:
- mysite.uknorth.cloudapp.azure.com
secretName: tls-secret
rules:
- host: mysite.uknorth.cloudapp.azure.com
http:
paths:
- backend:
serviceName: service-ui
servicePort: 8080
path: /
- backend:
serviceName: service-api
servicePort: 8999
path: /api
任何指导表示赞赏。
答案 0 :(得分:1)
因此,我们假设SSL正常(link),因为您可以访问nginx入口控制器。
您不需要重写注解。看一下这些规则:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myrule
namespace: mynamespace
annotations:
kubernetes.io/ingress.class: nginx
certmanager.k8s.io/cluster-issuer: letsencrypt-staging
spec:
tls:
- hosts:
- mysite.uknorth.cloudapp.azure.com
secretName: tls-secret
rules:
- host: mysite.uknorth.cloudapp.azure.com
http:
paths:
- backend:
serviceName: service-ui
servicePort: 8080
path: /
- backend:
serviceName: service-api
servicePort: 8999
path: /api
您发送给/api/.*
的所有内容都将重定向到service-api。而您发送给/
的任何内容都将发送给service-ui。
答案 1 :(得分:0)
感谢您的反馈。事实证明问题不在于上面的入口规则。 service-ui运行的命令参数不正确,因此未确认请求。我错过了service-api正确响应的事实。
简而言之,请检查端点和正在运行的服务是否已正确配置-对我来说,比其他任何人都值得上一课。我通过在本地卷曲该服务收到了响应,但这并不意味着它可以处理Ingress上的https请求,因为该服务的配置不正确。
另外,对我来说,另一课,请问开发人员是否将正确的映像用于构建。然后再问他们是否同意。