我将Kubernetes的入口设置如下
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: dev-ingress
#namespace: dev
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$2
nginx.ingress.kubernetes.io/use-regex: "true"
ingress.gcp.kubernetes.io/pre-shared-cert: "self-signed"
kubernetes.io/ingress.class: "nginx"
kubernetes.io/ingress.allow-http: "true"
spec:
rules:
- host: my.host.com
http:
paths:
- backend:
serviceName: webui-svc
servicePort: 80
path: /webui(/|$)(.*)我正在webui-svc下运行一个Angular应用程序部署。angular应用程序是使用docker进行容器化的,我在docker容器中包含了一个Nginx配置,如下所示
# Expires map
map $sent_http_content_type $expires {
default off;
text/html epoch;
text/css max;
application/json max;
application/javascript max;
~image/ max;
}
server {
listen 80;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
expires $expires;
gzip on;
}当我请求http://my.host.com/webui/时,内部呼叫被重定向,而没有使用webui作为前缀,例如
当我请求http://my.host.com/webui/时,有几个调用来获取main.js,vendor.js等等,这些都是通过http://my.host.com/runtime.js请求的,所以它失败了,如果它像http://my.host.com/webui/runtime.js一样被重定向,它就会成功
在angular应用程序或入口中是否有我缺少的配置。如有任何帮助,我们将不胜感激。
发布于 2021-04-04 11:36:39
您的重写目标正在剥离/webui/。考虑你的路径:
path: /webui(/|$)(.*)
现在检查rewrite-target
nginx.ingress.kubernetes.io/rewrite-target: /$2。
如果您删除此注释(您可以删除use-regex注释,因为现在不需要它),它会将/webui/路径传递到您的后端。
https://stackoverflow.com/questions/66936974
复制相似问题