繁体   English   中英

nginx 入口重写请求 webshell

[英]nginx ingress rewrite Request webshell

我在使用 nginx 入口在 Kubernetes 上部署 webshell 时遇到问题。 我正在重写从 /apple 到 / 在我的后端的所有请求。 后端在 / 上托管 b374k webshell。 我可以访问 webshell 表单 /apple 但是当我点击某些东西时,请求被发送到 / 而不是 /apple/... 这会导致 404。是否可以在不更改 webshell 代码的情况下解决这个问题?

Kubernetes 清单:

#Definition eines Srvices für ein Deployment
apiVersion: v1
kind: Service
metadata:
  name: hip-service
  namespace: hip-test
spec:
  selector:
    app: hip
  ports:
    - port: 80
---
#Definition Reverse-Proxy für einen Service
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hip-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    ingress.kubernetes.io/ssl-redirect: "false"
  namespace: hip-test
spec:
  rules:
  - http:
      paths:
        - path: /apple
          backend:
            serviceName: hip-service
            servicePort: 80

当您使用 rewrite-target 注释时, path字段值被视为正则表达式而不是前缀。 这就是为什么path: /仅与/字面匹配的原因。

取自nginx 入口文档

重要说明:如果在给定主机的任何 Ingress 上使用了use-regexrewrite-target注释,则将在给定主机的所有路径上强制执行不区分大小写的正则表达式位置修饰符,无论它们是在什么 Ingress 上定义的。

所以如果你想使用 rewrite-target 你应该这样做:

Definition Reverse-Proxy für einen Service
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: hip-ingress
  annotations:
    ingress.kubernetes.io/rewrite-target: /$1
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    ingress.kubernetes.io/ssl-redirect: "false"
  namespace: hip-test
spec:
  rules:
  - http:
      paths:
        - path: /apple/(.*)
          backend:
            serviceName: hip-service
            servicePort: 80

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM