如何使用 NGINX Ingress Controller 将 example.com 重定向到 example.com/login

问题描述 投票:0回答:2
{{- $root := . -}}
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: {{ include "ingress.name" . }}
  namespace: demo
  annotations:
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
    -   host: "*.{{ .Values.host }}"
        http:
          paths:
            {{- range $index, $service := .Values.deployments }}
            -   path: {{ $service.pathPrefix }}(/|$)(.*)
                backend:
                  serviceName: {{ $service.deploymentName }}
                  servicePort: 80
            {{- end  }}
---

此入口配置已成功运行。

此外,当任何人点击URL:http://example.com时,它应该永久重定向http://example.com/login,那么我该如何实现呢?

谢谢。

kubernetes redirect url-rewriting nginx-ingress
2个回答
1
投票

您可以添加注释,例如

nginx.ingress.kubernetes.io/server-snippet: |
      location ~ / {
         rewrite / https://<example.com to use $host>/login permanent;
      }

如果想使用配置片段

nginx.ingress.kubernetes.io/configuration-snippet: |
      if ($host = 'https://example.com/') {
        return 301 https://example.com/login;
      }

nginx.ingress.kubernetes.io/configuration-snippet: |
         rewrite / https://example.com/login permanent;

如果查看,您也可以使用变量而不是使用固定值。

$request_uri, $uri, $host
是您可以利用的几个变量。


0
投票

别忘了添加:

allow-snippet-annotations: "true"

和之后:

nginx.ingress.kubernetes.io/configuration-snippet: |
  rewrite / https://example.com/login permanent;
© www.soinside.com 2019 - 2024. All rights reserved.