我已经在Kubernetes集群中设置了一个有角度的docker应用程序(使用nginx来提供)。在Kubernetes中,我有一个入口控制器(来自kubernetes社区的入口控制器),它将路由来自以下域的流量:
a)https://app.somedomain.com 和 b)https://saas-customer.somedomain.com/app
到相同的角形容器。这个想法是个人用户可以使用a),公司用户/客户可以使用b)。我已经为a)设置了以下入口:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-ingress
annotations:
kubernetes.io/ingress.class: nginx
spec:
tls:
- hosts:
- app.somedomain.io
secretName: tls-secret
rules:
- host: app.somedomain.io
http:
paths:
- backend:
serviceName: frontend-service
servicePort: 80
这是b)
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: frontend-ingress-wild
annotations:
kubernetes.io/ingress.class: nginx
spec:
tls:
- hosts:
- somedomain.io
- '*.somedomain.io'
secretName: tls-secret
rules:
- host: '*.somedomain.io'
http:
paths:
- path: /app
backend:
serviceName: frontend-service
servicePort: 80
a)正常工作。对于b),问题在于可以提供index.html,但它引用的是'/'中的资产。 base href设置为/角。
src="polyfills.7037a817a5bb670ed2ca.js"
但是我不能更改基本href,因为在一种情况下,它应该是“ /”,而在另一种情况下,是“ / app”,但仍然应从一个位置提供所有资产。我不知道我是否需要为angular添加特定的路由以使其工作或尝试在ingress / nginx方面进行摆弄以解决此挑战。
答案 0 :(得分:0)
您想从“ /”服务您的资产,例如* .js文件?您可以在第二个入口使用以下注释来做到这一点:
nginx.ingress.kubernetes.io/configuration-snippet: |
rewrite ^/app/(.*\.js)$ /$1 break;
这样,您的应用将从/ app目录和js文件提供服务-从根目录开始,如下所示:
/app/index.html -> /app/index.html
/app/index.js -> /index.js
这是您想要实现的吗?