[英]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-regex
或rewrite-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.