端口转发以获得更简洁的网址

默认情况下,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,导致 Looker 无法正确关闭连接。这意味着,即使用户取消了数据库查询,该查询也会运行到完成。因此,您应避免将 Apache 反向代理与 Looker 搭配使用。

负载均衡器

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

后续步骤

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