nginx - 在 kubernetes 设置中为 protected 静态移动 `X-Accel-Redirect` 模式

标签 nginx kubernetes x-sendfile

我们正在迁移到 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/

相关文章:

apache - Varnish 根据请求的文件是否存在在后端之间进行选择的好方法

linux - 如何更改 NGINX 安装位置 Ubuntu 14.04

ssl - 如何在运行 Go 的 Busybox Docker 容器中进行 HTTPS 调用?

networking - 如何让 kubernetes 使用动态 IP 地址

blob - Collective.xsendfile、ZODB blob 和 UNIX 文件权限

security - IPTables 不会立即使用 ipset 阻止 IP

php - 如何在 Debian 上为 php5-fpm 设置 umask?

kubernetes - 与kubernetes中的前端通信

ruby-on-rails - Rails + X-Sendfile 向 Ipad 提供大型视频

php - X-Sendfile具体配置.htaccess问题