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

默认情况下,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,而不是间接(通过 Web 代理)转发数据包,因为 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,会导致 Looker 无法正确关闭连接。这意味着每个数据库查询都将运行完成,即使用户取消该查询也是如此。因此,您应避免将 Apache 反向代理与 Looker 搭配使用。

负载均衡器

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

后续步骤

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