更简洁的网址进行端口转发

默认情况下,HTTPS 会假定端口为 443。这意味着,系统会自动处理 https://looker.yourdomain.com,就像用户输入 https://looker.yourdomain.com:443 一样。不过,使用标准 HTTPS 端口 (443) 需要以 root 身份运行 Looker,这不受支持,也不建议这样做。

一种方法是,让用户在访问 Looker 时在网址中指定端口号。例如,如果您使用的是端口 9999,则他们会输入:https://looker.yourdomain.com:9999

在客户托管的实例中,为方便用户,我们建议您设置其他默认端口,以便用户输入 https://looker.yourdomain.com 后仍能进入正确的端口。您可以使用多种方法为 Looker 设置默认端口或将流量重定向到其他端口:

请注意,最好直接将数据包转发给 Looker,而不是间接(通过网络代理)转发,因为 Looker 具有在检测到浏览器已取消请求时停止数据库查询的功能。

Looker 主机上的 iptables

您可以使用 iptables 从其他端口访问 Looker。以下脚本会将流量从端口 443 转发到 9999。它是针对 Ubuntu Linux 编写的,如果您运行的是其他 Linux 发行版,则可能需要对其进行修改。

  1. 创建脚本文件:

    /etc/network/if-up.d/looker-https-forward
    
  2. 将以下内容添加到文件中:

    #!/bin/sh
    # Forward HTTPS traffic to the Looker app
    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 9999
    
  3. 将其设为可执行文件:

    sudo chmod 755 /etc/network/if-up.d/looker-https-forward
    
  4. 运行脚本,该脚本会在下次系统重启或网络重启时自动运行:

    sudo /etc/network/if-up.d/looker-https-forward
    

Looker 主机上的 xinetd

另一种方法是使用 xinetd。

  1. 确保 xinetd 允许从所有所需地址传入流量。在 /etc/xinetd.conf 的默认部分中,添加以下内容:

    {
    only_from = 0.0.0.0
    # or replace 0.0.0.0 with an IP range
    # (i.e., 128.0.0.0/16) if desired
    }
    
  2. 创建一个名为 /etc/xinetd.d/lookerhttps 的文件

  3. 将以下内容添加到文件中:

    # default: on
    # description: Redirect HTTPS/443 requests to
    # Looker default port 9999
    service https
    {
    disable = no
    id = lookerhttps
    socket_type = stream
    protocol = tcp
    user = root
    wait = no
    redirect = 127.0.0.1 9999
    }
    

反向代理服务器

可以通过 Looker 使用反向代理。我们建议使用 Nginx。它是我们唯一测试过并完全支持的反向代理,但我们不一定禁止使用其他选项。您可以在 Nginx 配置示例文档页面上找到 Nginx 配置示例。

请注意,Apache 反向代理存在一个 bug,该 bug 会导致 Looker 无法正确关闭连接。这意味着,即使用户取消了查询,每个数据库查询也会运行到完成。因此,您应避免将 Apache 反向代理与 Looker 搭配使用。

负载平衡器

有许多负载均衡器解决方案可供选择。概括来讲,负载均衡器将配置为监听端口 443 并将所有请求转发到端口 9999 上的 Looker。在这种情况下,SSL 服务器证书会安装在负载均衡器上。

后续步骤

配置端口转发后,您就可以允许 Looker 支持团队访问您的部署了。