gpt4 book ai didi

nginx - 在 Kubernetes 的 Nginx Ingress 对象中设置代理传递的最佳方法是什么

转载 作者:行者123 更新时间:2023-12-04 18:23:30 27 4
gpt4 key购买 nike

目前,我正在尝试将位于 Apache 负载平衡服务器上的站点迁移到我的 k8s 集群。但是,该应用程序使用 proxypass 和 proxyreversepass 进行了奇怪的设置,如下所示:

ProxyPass /something http://example.com/something
ProxyPassReverse /something http://example.com/something

我想在 Nginx Ingress 中模仿这个

首先我尝试使用 rewrite-target然而,注释不保留 Location使应用程序再次运行所必需的 header 。

然后我尝试获取 proxy-redirect-to/from特定位置块内的注释,如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gpg-app-ingress
annotations:
nginx.ingress.kubernetes.io/proxy-redirect-from: http://originalapp.com/something
nginx.ingress.kubernetes.io/proxy-redirect-to: http://example.com/something
spec:
rules:
- host: example.com
http:
paths:
- path: /something
backend:
serviceName: example-com
servicePort: 80

我希望能够改为使用自定义 proxy_pass变量,但似乎不可能。

模仿此代理通行证的最佳方法是什么?

最佳答案

首先,您可以为 nginx 入口 Controller 使用自定义配置,文档可以在 here 中找到。

另外,如果你只想使用 nginx 入口 Controller 作为反向代理,每个入口规则已经创建了 proxy_pass相关上游/后端服务的指令。

如果路径与您的规则和后端服务相同,那么您不必指定重写规则,只需指定后端服务的路径即可。但是如果路径
不同,则考虑使用 nginx.ingress.kubernetes.io/rewrite-target注释,否则你会得到 404 backend错误

所以重定向来自前端的请求 http://example.com/something到后端 example-com/something ,你的入口规则应该类似于下面

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: gpg-app-ingress
annotations:
kubernetes.io/ingress.class: nginx
#nginx.ingress.kubernetes.io/rewrite-target: /different-path
spec:
rules:
- host: example.com
http:
paths:
- path: /something
backend:
serviceName: example-com
servicePort: 80

有关注释的更多解释,请查看 Nginx Ingress Annotations

另外,如果出现问题,请考虑检查 nginx-ingress-controller pod 的日志
kubectl logs nginx-ingress-controller-xxxxx

希望能帮助到你!

关于nginx - 在 Kubernetes 的 Nginx Ingress 对象中设置代理传递的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55940828/

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