我们正在迁移到 kubernetes,我们对它是全新的。
在我们当前的单一服务设置中,我们有:Nginx -> Web 应用程序。通过这种方式,我们可以在 Web 应用程序中通过身份验证来保护一些静态 Assets ,并在身份验证发生后使用 Nginx 的内部和 X-Accel-Redirect 来提供静态文件。
现在在 kubernetes 中我们有 Ingress 和这些服务的背后:
- 网络应用
- 私有(private)静态服务
有没有办法告诉 Web 应用程序的入口“重定向”请求,就像我们对 sendfile 所做的那样,以便私有(private)静态服务会回复它?或者以某种方式实现保护我们的静态,同时在 kubernetes 设置中保持静态服务分离和独立?
我们通过在 Web 应用程序前面链接私有(private)静态服务来使其工作,但感觉必须有更好的方法来做到这一点。
最佳答案
以下是我设法让它发挥作用的方法。
我创建了两个入口。 第一:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
internal;
nginx.ingress.kubernetes.io/rewrite-target: /some/path/$1
name: static-service-internal
spec:
rules:
- http:
paths:
- backend:
serviceName: private-static-service
servicePort: 80
path: /protected/(.*)
第二个服务:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
name: web-app
spec:
rules:
- http:
paths:
- backend:
serviceName: web-app
servicePort: 80
path: /
您在上面看到的应该与 this example from nginx documentation 中的一样工作
当从 web-app
接收到 X-Accel-Redirect:/protected/iso.img
时,它将请求 /some/path/iso.img
来自 私有(private)静态服务
。
如果这能解决您的问题,请告诉我。
关于nginx - 在 kubernetes 设置中为 protected 静态移动 `X-Accel-Redirect` 模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62533514/