首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有令牌身份验证的iframe中安装nginx反向代理后面的Grafana坞

在带有令牌身份验证的iframe中安装nginx反向代理后面的Grafana坞
EN

Stack Overflow用户
提问于 2019-02-03 14:37:35
回答 3查看 7K关注 0票数 4

我正在尝试设置运行在docker上的Grafana --构建在nginx反向代理的后面,只要我将auth.anonymous设置为enabled=true,它就能正常工作。

但是,当我禁用匿名签名,并尝试在标题中使用“授权”令牌登录时,当导航到Grafana sub_path时,我会看到下面的错误:

如果您看到这个Grafana无法加载它的应用程序文件

  1. 这可能是由反向代理设置造成的。
  2. 如果您在子路径下托管grafana,请确保grafana.ini root_path设置包含子路径。
  3. 如果您有一个本地dev构建,请确保您使用: npm运行dev、npm运行监视或npm运行生成来构建前端。
  4. 有时候,重新启动grafana服务器会有所帮助。

我的ngnix.conf设置是:

代码语言:javascript
复制
server {
  listen 80
  charset utf-8
  location /grafana-dashboard/ {
    proxy_pass http://grafana:3000/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-Host $host;
    proxy_set_header X-Forwarded-Server $host;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_max_temp_file_size 0;
  }
}

格拉法纳是运行在地堑:3000从码头-构图。

docker-compose.config.yaml内容是:

代码语言:javascript
复制
version: '3.4'
services:
  grafana:
    container_name: grafana
    depends_on:
      - db
    networks:
    - static-network
    ports:
    - 3000:3000
    restart: always
    volumes:
    - grafana_stor:/var/lib/grafana
    environment:
    - GF_AUTH_PROXY_ENABLED=true
    - GF_SERVER_DOMAIN=10.0.0.3
    - GF_SERVER_ROOT_URL=http://10.0.0.3/grafana-dashboard/
    user: "472"

volumes:
  grafana_stor: {}

networks:
  static-network:
    ipam:
      config:
    - subnet: 172.20.0.0/16

在访问10.0.0.3/ Grafana -仪表板/i之前,我使用Grafana、API_KEY /api/auth/键生成HTTP_API,然后在客户机上传递"Authorization: header“头上返回的令牌。

为了澄清,grafana仪表板的目标是显示在我的webapp中的iframe上,但是由于我需要传递授权头,我向nginx提供服务的/grafana-仪表板/发出一个请求,然后将'blob‘响应放在iframe上。

整个想法是有“单一登录”的地堑和我的网络应用程序。所以刚刚登录到webapp的用户也不需要登录到grafana。但是,如果grafana被直接使用(而不是从iframe),则需要grafana登录屏幕或nginx简单身份验证。

EN

回答 3

Stack Overflow用户

发布于 2019-02-03 18:36:40

您的问题是: 1. API键用于API访问,但是您试图用API键2加载UI (不是API,它在/api路径上可用)。

解决方案:

  1. 在代理(Nginx)上解决用户身份验证: no auth,basic auth,SSO (OIDC/SAML),LDAP,.
  2. 在请求头中从代理传递用户标识
  3. 为该请求头正确配置Grafana auth代理:http://docs.grafana.org/auth/auth-proxy/
票数 0
EN

Stack Overflow用户

发布于 2019-07-10 08:43:56

正如上面提到的,您没有从nginx代理中传递用户身份信息。我使用了基本身份验证,并将下面的行添加到location块中。

代码语言:javascript
复制
proxy_set_header  Authorization "Basic <base64 encoded username:password>";

这让它起作用了。最好是在Grafana中添加一个新的只读用户,而不是管理用户。为了获得更多的安全性,您可能还想用下面的grafana.ini来更新它。

代码语言:javascript
复制
session_life_time = 900
allow_sign_up = false
allow_org_create = false
票数 0
EN

Stack Overflow用户

发布于 2020-05-25 20:25:14

我能够通过将Grafana HTTP中的API键附加为cookie来使其工作。然后,在我的nginx.conf中,我有:

代码语言:javascript
复制
location /grafana-dashboard/ {

    # The important line:
    proxy_set_header Authorization "Bearer $cookie_grafana_key";

    proxy_pass http://grafana:3000/;
}

这样,您就可以正常使用iframe,而不必担心设置标头。

另外,我不确定这是否是nginx配置问题,但当我在AJAX请求中添加授权头和API密钥时--而不是将密钥作为cookie传递--我也得到了原始错误。我不知道上面是什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54503917

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档