Kubernetes ingress / NGINX 重写不匹配,而正则表达式似乎有效

Kubernetes ingress / NGINX re-write does not match while regex seems valid

我正在尝试过滤掉所有以 /something 开头的路径。虽然正则表达式似乎对在线测试人员有效,但所有路径的结果都是 404

kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: myhost.com
    http:
      paths:
      - backend:
          serviceName: myservice
          servicePort: 80          
        path: /^([^something].*)

尝试使用正则表达式(例如 path: /(^[^something])(.*)),但仍然得到 404

我错过了什么?

v1.12.2 客户端与 v1.14.1 服务器一起使用。

如果您想拒绝所有到 /something 的流量,您应该使用名为 server-snippedNginx 注释。它将允许您添加自定义配置。

看起来像:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
   name: nginx-snippet
   annotations:
      nginx.ingress.kubernetes.io/configuration-snippet: |

      location /something {

           deny all;  
      }

可以在 Github 线程上找到类似的示例。

您还可以考虑第二个选项,其中包含 2 个 ingress 个对象和 authentication。另一个 .

中提到了这一点

此外,您不仅可以按位置拒绝访问,还可以拒绝特定 IP 的访问。可以使用名为 whitelist-source-range.

的注解获取