Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Nginx Ingress对象中为Kubernetes设置代理传递的最佳方法是什么_Nginx_Kubernetes_Proxy_Kubernetes Ingress_Nginx Ingress - Fatal编程技术网

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

在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注释,但是它不能保持位

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

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检查此项