将Http重定向到ASP中的Https.托管在Kubernetes上的NET Core失败



我的asp.net核心web应用程序在statup.cs上应用了重定向为:

app.UseHttpsRedirection();

当我在kubernetes上托管它时,问题就出现了,因为在那里不会发生这种重定向。该应用程序同时在http和https url上打开。

我在我的电脑上的本地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

上的入口打开两个端口,它们是-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核心。在我已在应用程序上应用重定向的情况下,重定向不起作用
  2. 应该在入口上进行重定向吗。在这种情况下,我认为我们已经删除了应用程序。从应用程序中使用HttpsDirection((
  3. 我们必须打开哪些码头集装箱港口,吊舱将托管哪些港口,以及如何打开

谢谢

根据我的研究,我找到了以下方法。

  1. 从ASP中删除重定向。NET核心应用程序,当我们将其托管到kubernetes时
  2. 将重定向应用于Ingress本身。通过添加以下2行:

nginx.ingress.kubernetes.io/force-sl-redirect:"真">
nginx.ingress.kubernetes.io/sl-redirect:"真";

所以我的入口代码变成:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: first-ingress
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /
nginx.ingress.kubernetes.io/force-ssl-redirect: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- secretName: ssl
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: first-service
port:
number: 8080

让我知道你的想法。如果你有更好的答案,请在这个问题上添加一个新的答案。

我不是Kubernetes大师,但入口控制器的工作似乎与应用程序的反向代理一样,并终止(最后一站(SSL连接。因此,默认情况下K8会正确地从应用程序中夺走一些控制权。

有多个地方可以引起http->https重定向。按顺序:

  1. 内容交付网络(CDN边缘(
  2. 负载平衡器
  3. 代理Web服务器(在这种情况下,IIS、Apache、Nginx或Kubernetes入口控制器位于此处(
  4. Kestrel

您越早引起此重定向,通常对最终用户的响应就越快。

因此,虽然您可以允许流量一直到达应用程序以处理请求,但如果可能的话,您应该更愿意尽早完成。

相关内容

  • 没有找到相关文章

最新更新