You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Nginx SSL认证连接MLflow服务器?

解决MLflow客户端通过Nginx SSL认证连接的问题

你遇到的核心问题是自签名SSL证书的信任问题、主机名不匹配,再加上环境变量配置的细节错误,我们一步步拆解解决:

1. 修复主机名不匹配错误(第三个尝试的核心问题)

你的SSL证书是针对my-mlflow.com生成的,但你用localhost访问,这会触发SSL的主机名验证失败。解决步骤:

  • 修改本地hosts文件(Windows路径:C:\Windows\System32\drivers\etc\hosts),添加一行:
    127.0.0.1 my-mlflow.com
    
  • 之后访问MLflow服务器时,统一用https://my-mlflow.com:5043代替localhost:5043

2. 正确配置MLflow的SSL信任

你需要明确告诉MLflow客户端信任你的自签名证书,同时注意环境变量名不要有多余空格(你之前的代码里MLFLOW_TRACKING_URI 这类变量名末尾有空格,会导致变量无法被识别):

  • 设置MLFLOW_TRACKING_SERVER_CERT_PATH指向你的自签名证书文件(.pem),确保路径是本地可访问的正确路径。

3. 规范配置认证信息

推荐用环境变量单独设置用户名和密码,比直接写在URI里更清晰,也能避免URI格式可能的解析问题:

  • 设置MLFLOW_TRACKING_USERNAME和MLFLOW_TRACKING_PASSWORD两个环境变量,同样不要留多余空格。

完整工作代码示例

import os
import mlflow

# 配置MinIO相关环境变量
os.environ['MLFLOW_S3_ENDPOINT_URL'] = 'https://my-mlflow.com:9000'  # 若MinIO也用自签名证书,需同步修改hosts或配置信任
os.environ['AWS_ACCESS_KEY_ID'] = 'user'
os.environ['AWS_SECRET_ACCESS_KEY'] = 'password'
# 若MinIO也是自签名证书,添加该行信任其证书
# os.environ['AWS_CA_BUNDLE'] = 'path/to/minio/cert.pem'

# 配置MLflow跟踪服务器的认证和SSL
os.environ['MLFLOW_TRACKING_URI'] = 'https://my-mlflow.com:5043/'
os.environ['MLFLOW_TRACKING_USERNAME'] = 'user'
os.environ['MLFLOW_TRACKING_PASSWORD'] = 'password'
os.environ['MLFLOW_TRACKING_SERVER_CERT_PATH'] = 'path/to/nginx/auth/domain.pem'

# 初始化MLflow
mlflow.set_tracking_uri(os.environ['MLFLOW_TRACKING_URI'])
mlflow.set_experiment("MLflow_demo")

# 测试运行
with mlflow.start_run():
    mlflow.log_param("test_param", 1)
    mlflow.log_metric("test_metric", 0.5)

额外检查点

  • 确认Nginx配置里正确引用了SSL证书和密钥,比如在配置文件中有:
    ssl_certificate /etc/nginx/conf.d/domain.pem;
    ssl_certificate_key /etc/nginx/conf.d/domain.key;
    
  • 若仅用于测试,可临时关闭SSL验证(生产环境禁用):设置os.environ['MLFLOW_TRACKING_INSECURE_TLS'] = 'true',但这会跳过证书验证,存在安全风险。

内容的提问来源于stack exchange,提问作者Fernando080

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.28 16:57:41