我的asp.net核心Web应用程序在statup.cs上应用了重定向,如下所示:
app.UseHttpsRedirection();
当我在Kubernetes上托管它时,问题就出现了,在那里不会发生这种重定向。应用程序在http和https URL上都打开。
我在安装了Kali Linus的PC上的本地Kubernetes集群上托管应用程序。
这是我正在使用的入口:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: first-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
tls:
- secretName: ssl
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: first-service
port:
number: 8080
上的入口打开2个端口,分别为- 80、443。
在这种情况下,应该如何进行重定向?
部署是:
apiVersion: apps/v1
kind: Deployment
metadata:
name: first-dep
labels:
app: aspnet-core-app
spec:
replicas: 1
selector:
matchLabels:
component: web
template:
metadata:
labels:
component: web
spec:
containers:
- name: csimpleweb
image: simpleweb
imagePullPolicy: Never
ports:
- containerPort: 80
本服务为:
apiVersion: v1
kind: Service
metadata:
name: first-service
spec:
type: NodePort
selector:
component: web
ports:
- port: 8080
targetPort: 80
因此,概括起来,我想问以下几点:
1.如何在k8s + ASP.NET核心中重定向工作。重定向不工作在我的情况下,我已经在应用程序上应用了重定向。
1.应该在入口处进行重定向吗?如果是这样的话,怎么做?在这种情况下,我认为我们已经从应用程序中删除了app.UseHttpsRedirection()。
1.什么码头集装箱港口,其中吊舱将主机,我们必须打开和如何?
谢谢你
2条答案
按热度按时间6tr1vspr1#
根据我的研究我发现了下面的方法。
1.当我们将ASP.NET核心应用程序托管到kubernetes时,请从该应用程序中删除重定向。
1.将重定向应用到Ingress本身。通过添加以下2行:
nginx.ingress.kubernetes.io/force-ssl-redirect: “真实”
nginx.ingress.kubernetes.io/ssl-redirect: “真实”
所以我的入口代码变成:
让我知道你的想法。如果你有一个更好的答案,请添加一个新的答案的问题。
bf1o4zei2#
我不是Kubernetes的Maven,但入口控制器的工作似乎是充当应用程序的反向代理,并终止(最后一站)SSL连接。因此,默认情况下,K8会正确地从应用程序中拿走一些控制权。
有多个地方你可以导致http -〉https重定向。
1.内容交付网络(CDN Edge)
1.负载平衡器
1.代理Web服务器(在本例中,此处福尔斯IIS、Apache、Nginx或Kubernetes入口控制器)
1.凯斯特尔
通常,越早进行此重定向,对最终用户的响应就越快。
因此,虽然您可以允许通信量到达应用程序以处理请求,但如果可能的话,您应该更喜欢尽快完成。