跳到主要内容

使用 Nginx 和 SSL 部署 Langflow

在基于 Linux 的服务器上部署 Langflow,使用 Nginx 作为反向代理,使用 Let's Encrypt 获取 SSL 证书,并使用 Certbot 进行自动化证书管理。

此设置会加密用户与 Langflow 服务器之间的所有通信。SSL 证书确保敏感数据受到保护,防止窃听和篡改,而通过 Certbot 进行的自动证书管理消除了手动配置 SSL 的复杂性。

先决条件

  • 一台具有双核 CPU 和至少 2 GB RAM 的 Ubuntu 或基于 Debian 的 Linux 服务器 本示例使用 Digital Ocean cloud 进行托管。您的部署可能会有所不同。
  • 一个具有外部 DNS 管理访问权限的域名
  • 一个已配置为将域名指向服务器外部 IP 地址的 DNS 记录 例如,如果您的服务器 IP 是 203.0.113.1,请按如下方式配置您的 DNS:

    _10
    Type: A
    _10
    Name: langflow.example.com
    _10
    Value: 203.0.113.1

使用 SSH 连接到您的服务器

  1. 创建一个 SSH 密钥以远程连接到您的服务器。 例如:


    _10
    ssh-keygen -t ed25519 -C "DANA@EXAMPLE.COM"

    DANA@EXAMPLE.COM 替换为您想要与该 SSH 密钥关联的电子邮件地址。

  2. 在终端中,按照说明创建您的 SSH 密钥对。 这将同时创建私钥和公钥。 要从终端复制公钥,请输入以下命令:


    _10
    cat ~/Downloads/host-lf.pub | pbcopy

  3. 在您的服务器中,添加您在上一步中复制的 SSH 密钥。 例如,如果您使用的是 Digital Ocean 云服务器,请在创建服务器时或通过 Digital Ocean 控制面板添加此 SSH 密钥。

  4. 要使用 SSH 连接到您的服务器,请输入以下命令。


    _10
    ssh -i PATH_TO_PRIVATE_KEY/PRIVATE_KEY_NAME root@SERVER_IP_ADDRESS

    替换以下内容:

    • PATH_TO_PRIVATE_KEY/PRIVATE_KEY_NAME:与您添加到服务器的公钥匹配的私有 SSH 密钥文件的路径
    • SERVER_IP_ADDRESS:您服务器's 的 IP 地址
  5. 当提示输入密钥指纹时,输入 yes。 终端输出将指示连接是成功还是失败。 连接到 Digital Ocean 云服务器后返回以下响应。


    _10
    System information as of Wed Oct 8 21:40:43 UTC 2025
    _10
    _10
    System load: 0.02 Processes: 103
    _10
    Usage of /: 4.1% of 47.35GB Users logged in: 1
    _10
    Memory usage: 10% IPv4 address for eth0: 165.227.176.236
    _10
    Swap usage: 0% IPv4 address for eth0: 10.17.0.5

在您的服务器上安装 Langflow

要在您的服务器上安装 Langflow,请执行以下操作:

  1. 更新系统包。


    _10
    sudo apt update && sudo apt upgrade -y

  2. 安装 Python 和 pip。


    _10
    sudo apt install python3 python3-pip python3-venv -y

  3. 安装 uv 以管理 Python 包。 Langflow 建议使用 uv 以获得更快的安装速度。


    _10
    pip install uv

  4. 为 Langflow 创建虚拟环境。


    _10
    uv venv langflow-venv
    _10
    source langflow-venv/bin/activate

  5. 使用 uv 安装 Langflow。


    _10
    uv pip install langflow

  6. (可选)启动 Langflow。


    _10
    uv run langflow run --host 127.0.0.1 --port 7860 &

    通过您的 http://YOUR_PUBLIC_IP:7860 测试访问。 由于 Langflow 运行在 localhost 上,您应该无法成功访问。 在接下来的步骤中,您将安装 Nginx 作为反向代理来处理外部访问,并安装 Certbot 来配置 SSL 以实现安全的 HTTPS 访问。

安装 Nginx

Nginx 是一个反向代理,它接收外部请求并将其转发到您的 Langflow 服务器。除了 SSL 终端外,Nginx 还包含负载均衡和安全功能。有关更多信息,请参阅 Nginx 文档

  1. 在您的服务器上安装 Nginx。


    _10
    sudo apt install nginx -y

  2. 在您的服务器上启动并启用 Nginx。


    _10
    sudo systemctl start nginx
    _10
    sudo systemctl enable nginx

  3. 创建 Nginx 配置文件。 将 DOMAIN_NAME 替换为您实际的域名,例如 langflow.example.com


    _10
    sudo nano /etc/nginx/sites-available/DOMAIN_NAME

  4. 将以下内容粘贴到您在 /etc/nginx/sites-available/DOMAIN_NAME 创建的配置文件中。

    DOMAIN_NAME 替换为您实际的域名,例如 langflow.example.com


    _29
    server {
    _29
    listen 80;
    _29
    server_name DOMAIN_NAME;
    _29
    _29
    # 增加客户端请求体大小以支持文件上传
    _29
    client_max_body_size 100M;
    _29
    _29
    location / {
    _29
    proxy_pass http://127.0.0.1:7860/;
    _29
    proxy_set_header Host $host;
    _29
    proxy_set_header X-Real-IP $remote_addr;
    _29
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    _29
    proxy_set_header X-Forwarded-Proto $scheme;
    _29
    _29
    # 为 Langflow 提供 WebSocket 支持
    _29
    proxy_http_version 1.1;
    _29
    proxy_set_header Upgrade $http_upgrade;
    _29
    proxy_set_header Connection "upgrade";
    _29
    _29
    # 为运行时间较长的流设置超时
    _29
    proxy_connect_timeout 60s;
    _29
    proxy_send_timeout 60s;
    _29
    proxy_read_timeout 300s;
    _29
    _29
    # 缓冲设置
    _29
    proxy_buffering off;
    _29
    proxy_request_buffering off;
    _29
    }
    _29
    }

    此配置在 80 端口上监听标准 HTTP。当您在稍后的步骤中安装 Certbot 时,它将修改此配置以添加 443 端口用于 HTTPS。

  5. 要启用您的站点配置,请在 /sites-available/sites-enabled 目录之间创建一个符号链接。/sites-available 存储所有站点配置,而 /sites-enabled 仅存储 Nginx 读取的活动配置。创建此符号链接即可开启该配置。


    _10
    sudo ln -s /etc/nginx/sites-available/DOMAIN_NAME /etc/nginx/sites-enabled/DOMAIN_NAME

  6. 检查 Nginx 配置文件的语法。


    _10
    sudo nginx -t

  7. 重启 Nginx。


    _10
    sudo systemctl restart nginx

安装 Certbot 并获取 SSL 证书

虽然 Nginx 处理加密和解密流量中的 SSL 终止,但 Certbot 会自动从 Let's Encrypt 获取 SSL 证书,并配置 Nginx 使用它们。

Let's Encrypt 推荐使用 Certbot 客户端进行自动化证书管理。有关更多信息,请参阅 Certbot 文档

在您的服务器上安装 Certbot 客户端以管理证书,并安装 python3-certbot-nginx 插件以允许 Certbot 修改服务器的 Nginx 配置。

  1. 安装 Certbot 和 python3-certbot-nginx 插件。


    _10
    sudo apt install certbot python3-certbot-nginx -y

  2. 从 Let's Encrypt 获取 DOMAIN_NAME 的 SSL 证书。


    _10
    sudo certbot --nginx -d DOMAIN_NAME

    此结果表示 Certbot 成功了。


    _10
    Successfully received certificate.
    _10
    Certificate is saved at: /etc/letsencrypt/live/DOMAIN_NAME/fullchain.pem
    _10
    Key is saved at: /etc/letsencrypt/live/DOMAIN_NAME/privkey.pem

    使用 --nginx 时,Certbot 会自动将路径作为 ssl_certificatessl_certificate_key 注入到您的 Nginx 配置中。

  3. 从虚拟环境启动 Langflow。

    a. 激活虚拟环境。


    _10
    source langflow-venv/bin/activate

    b. 在后台启动 Langflow。


    _10
    uv run langflow run --host 127.0.0.1 --port 7860 &

  4. 要测试部署,请在浏览器中导航到 https://DOMAIN_NAME

  5. 验证 SSL 证书是否正常工作。确保 URL 是 https://,而不是 http://。 您的浏览器地址栏应显示一个 图标。 点击 图标可查看 SSL 证书详情。

另请参阅

Search