自定义 Metabase Jetty Web 服务器

在大多数情况下,没有理由修改关于 Metabase 如何运行其嵌入式 Jetty Web 服务器来托管应用程序的任何设置,但是如果您希望直接使用 HTTPS 运行 Metabase 服务器,或者您需要在另一个端口上运行,则所有这些都是可配置的。

在另一个端口上运行 Metabase

默认情况下,Metabase 将在端口 3000 上启动,但是如果您希望在另一个端口上运行应用程序,您可以通过设置以下环境变量来实现

export MB_JETTY_PORT=12345
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar

在此示例中,一旦应用程序启动,您将通过端口 12345 而不是默认端口 3000 访问它。

监听特定网络接口

默认情况下,Metabase 将监听 localhost。在某些生产环境中,您可能希望监听不同的接口,这可以通过使用 MB_JETTY_HOST 环境变量来完成

export MB_JETTY_HOST=0.0.0.0
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar

将 HTTPS 与 Metabase 结合使用

如果您有 SSL 证书并且希望 Metabase 直接使用其 Web 服务器通过 HTTPS 运行,您可以通过使用以下环境变量来实现

export MB_JETTY_SSL="true"
export MB_JETTY_SSL_PORT="8443"
export MB_JETTY_SSL_KEYSTORE="path/to/keystore.jks" # replace this value with your own
export MB_JETTY_SSL_KEYSTORE_PASSWORD="storepass" # replace this value with your own
java --add-opens java.base/java.nio=ALL-UNNAMED -jar metabase.jar

请务必将 path/to/keystore.jksstorepass 替换为您Java KeyStore 的正确路径和密码。应用上述设置后,您将在端口 8443 上通过 HTTPS 使用提供的证书运行 Metabase。

不知道如何自己生成 Java KeyStore?这有点高级,但如果您有兴趣,可以阅读更多关于如何在 Jetty 中配置 SSL 的信息在他们自己的文档中。否则,您可能会发现最简单的方法是在 Metabase 外部处理 SSL 终止。

阅读其他Metabase 版本的文档。