默认情况下,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 设置默认端口,或将流量重定向到其他端口:
- 使用
--port=<i>
Looker 启动选项指定所需的端口,例如--port=9999
。Looker 启动选项文档页面介绍了此选项。 - 创建使用
iptables
的脚本。 - 使用
xinetd
。 - 使用 Nginx 反向代理服务器。
- 使用负载平衡器。
请注意,最好直接将数据包转发给 Looker,而不是间接(通过网络代理)转发,因为 Looker 具有在检测到浏览器已取消请求时停止数据库查询的功能。
Looker 主机上的 iptables
您可以使用 iptables 从其他端口访问 Looker。以下脚本会将流量从端口 443 转发到 9999。该脚本专为 Ubuntu Linux 编写,如果您运行的是其他 Linux 发行版,则可能需要对其进行修改。
创建脚本文件:
/etc/network/if-up.d/looker-https-forward
将以下内容添加到文件中:
#!/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
将其设为可执行文件:
sudo chmod 755 /etc/network/if-up.d/looker-https-forward
运行该脚本,该脚本将在下次系统或网络重启时自动运行:
sudo /etc/network/if-up.d/looker-https-forward
Looker 主机上的 xinetd
另一种方法是使用 xinetd。
确保 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 }
创建一个名为
/etc/xinetd.d/lookerhttps
的文件将以下内容添加到文件中:
# 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 支持团队访问您的部署了。