我在Kubernetes上使用nginx入口部署webshell时遇到了问题。我正在重写所有从/apple发往/在我的后端的请求。后端在/上托管b374k webshell。我可以访问webshell表单/apple,但当我单击某项内容时,请求将发送到/而不是/apple/...结果是404。有没有可能在不改变webshell代码的情况下解决这个问题?
Kubernetes Manifest:
#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发布于 2020-05-21 16:26:14
当您使用重写目标注释时,path字段值被视为正则表达式,而不是前缀。这就是为什么字面上只与/匹配path: /的原因。
重要说明:如果在给定主机的任何入口上使用
use-regex或rewrite-target注释,则将在给定主机的所有路径上强制执行不区分大小写的正则表达式location modifier,无论它们是在哪个入口上定义的。
因此,如果你想使用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: 80https://stackoverflow.com/questions/61916864
复制相似问题