在Nginx Ingress对象中为Kubernetes设置代理传递的最佳方法是什么
目前,我正在尝试将一个生活在Apache负载平衡服务器上的站点迁移到我的k8s集群。但是,应用程序的设置很奇怪,使用了proxypass和proxyreversepass,如下所示:在Nginx Ingress对象中为Kubernetes设置代理传递的最佳方法是什么,nginx,kubernetes,proxy,kubernetes-ingress,nginx-ingress,Nginx,Kubernetes,Proxy,Kubernetes Ingress,Nginx Ingress,目前,我正在尝试将一个生活在Apache负载平衡服务器上的站点迁移到我的k8s集群。但是,应用程序的设置很奇怪,使用了proxypass和proxyreversepass,如下所示: ProxyPass /something http://example.com/something ProxyPassReverse /something http://example.com/something 我想在Nginx入口中模拟这一点 首先,我尝试使用rewrite target注释,但是它不能保持位
ProxyPass /something http://example.com/something
ProxyPassReverse /something http://example.com/something
我想在Nginx入口中模拟这一点
首先,我尝试使用rewrite target
注释,但是它不能保持位置
头,这是使应用程序再次运行所必需的
然后,我尝试将代理重定向到/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\u pass
变量,但它似乎不太可能
模拟此代理过程的最佳方式是什么?首先,您可以为nginx入口控制器使用自定义配置,可以找到相关文档 此外,如果您只想将nginx ingress controller用作反向代理,则每个ingress规则都已经为相关的上游/后端服务创建了
proxy\u pass
指令
若路径和您的规则和后端服务相同,那个么您不必指定重写规则,只需指定后端服务的路径即可。但是如果路径
不同,然后考虑使用<代码> nGix.Iccress。KubNETE.IO/重写目标< /代码>注释,否则将得到<代码> 404后端< /代码>错误
所以要重定向来自前端的请求http://example.com/something
到后端示例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
有关批注的更多说明,请查看
也可以考虑通过错误的
检查NGIX入口控制器POD的日志。kubectl logs nginx-ingress-controller-xxxxx
希望有帮助 这正是我必须做的。我不明白每次进入都是它自己的代理通行证。当我了解到这一切都非常简单地结合在一起时。@coulinuxoid当入口规则自动创建到相关上游/后端服务的proxy\u pass指令时,它是http。对于我的服务,它创建
proxy\u passhttp://default-my-ingress-test.myapp.com-myapp-88;代码>指令。但是,我需要它是https,如下所示:proxy\u passhttps://default-my-ingress-test.myapp.com-myapp-88;代码>。然后,只有我的应用程序才能工作,因为后端只接受https请求。是否有任何方法可以为此目的修改服务的proxy\u pass
指令?@AnjanaDyna检查此项