gpt4 book ai didi

nginx - 使用 Nginx 路径前缀作为 Kubernetes Ingress,即使使用 rewrite-target 也会破坏子路径下的所有内容

转载 作者:行者123 更新时间:2023-12-05 03:37:13 26 4
gpt4 key购买 nike

这个例子专门针对 Nextcloud,尽管我过去和其他人有过同样的( Unresolved 问题)。

我只想访问 www.myserver.com/nextcloud 下的 nextcloud。

我可以用我目前的设置访问 Nextcloud 的首页,但是所有不直接在基本路径下的东西都坏了。例如图像和 JS。

果然,我可以在我的浏览器网址中手动输入类似 www.myserver.com/nextcloud/core/css/guest.css 的内容,它就在那里。但问题是 Nextcloud 的首页试图访问以下所有内容:www.myserver.com/core/css/guest.css

这是我的入口:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nextcloud
namespace: homeserver
annotations:
kubernetes.io/ingress.class: nginx
cert-manager.io/cluster-issuer: letsencrypt-staging
nginx.ingress.kubernetes.io/configuration-snippet: |
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $http_connection;
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- host: www.myserver.com
http:
paths:
- path: /nextcloud(/|$)(.*)
pathType: Prefix
backend:
service:
name: nextcloud
port:
number: 80

最佳答案

如果你正在使用它,你应该必须在后端或 HTML 中使用相对路径。

但是你只能做一件事

如果您的所有请求都通过位于 www.myserver.com/core 的应用程序获得,并且不存在其他文件夹或端点

您可以创建一些重定向规则,例如:

www.myserver.com/core -> www.myserver.com/nextcloud/

一旦重定向重定向到新的 URL,您创建的另一个入口将处理路径并提供服务。

入口示例

metadata:
name: ingress-test
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
nginx.ingress.kubernetes.io/location-snippet: |
location = /core/ {
proxy_pass http://[hostname]/nextcloud/;
}
spec:

不过,这取决于您的应用程序配置和结构。

关于nginx - 使用 Nginx 路径前缀作为 Kubernetes Ingress,即使使用 rewrite-target 也会破坏子路径下的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69390152/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com