繁体   English   中英

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

[英]What is the Best way to Setup Proxy Pass in an Nginx Ingress object for Kubernetes

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

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

我想在Nginx Ingress中模仿

首先,我尝试使用rewrite-target批注,但是该批注未保留Location头,这是使应用程序再次运行所必需的。

然后,我尝试在特定位置块内的适当位置获取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入口控制器使用自定义配置,可以在此处找到文档

另外,如果您只想将nginx入口控制器用作反向代理,则每个入口规则proxy_pass为相关的上游/后端服务创建了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入口注释

另外,考虑通过Nginx-ingress-controller pod的日志检查是否出了问题

kubectl logs nginx-ingress-controller-xxxxx

希望能帮助到你!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM