首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >nginx入口重写请求webshell

nginx入口重写请求webshell
EN

Stack Overflow用户
提问于 2020-05-20 23:25:05
回答 1查看 43关注 0票数 0

我在Kubernetes上使用nginx入口部署webshell时遇到了问题。我正在重写所有从/apple发往/在我的后端的请求。后端在/上托管b374k webshell。我可以访问webshell表单/apple,但当我单击某项内容时,请求将发送到/而不是/apple/...结果是404。有没有可能在不改变webshell代码的情况下解决这个问题?

Kubernetes Manifest:

代码语言:javascript
复制
#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
EN

回答 1

Stack Overflow用户

发布于 2020-05-21 16:26:14

当您使用重写目标注释时,path字段值被视为正则表达式,而不是前缀。这就是为什么字面上只与/匹配path: /的原因。

摘自nginx ingress docs

重要说明:如果在给定主机的任何入口上使用use-regexrewrite-target注释,则将在给定主机的所有路径上强制执行不区分大小写的正则表达式location modifier,无论它们是在哪个入口上定义的。

因此,如果你想使用rewrite-target,你应该这样做:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61916864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档