Pab*_*ero 11 proxy nginx kubernetes kubernetes-ingress nginx-ingress
目前,我正在尝试将位于 Apache 负载平衡服务器上的站点迁移到我的 k8s 集群。然而,该应用程序使用 proxypass 和 proxyreversepass 进行了奇怪的设置,如下所示:
ProxyPass /something http://example.com/something
ProxyPassReverse /something http://example.com/something
Run Code Online (Sandbox Code Playgroud)
我想在 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
Run Code Online (Sandbox Code Playgroud)
我希望能够改用自定义proxy_pass变量,但似乎不可能。
模仿此代理通行证的最佳方法是什么?
首先,您可以为 nginx 入口控制器使用自定义配置,可以在此处找到文档
此外,如果您只想使用 nginx 入口控制器作为反向代理,则每个入口规则都已经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
Run Code Online (Sandbox Code Playgroud)
有关注释的更多解释,请查看Nginx Ingress Annotations
另外,如果出现问题,请考虑检查 nginx-ingress-controller pod 的日志
kubectl logs nginx-ingress-controller-xxxxx
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
17735 次 |
| 最近记录: |