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

为ElysiaJS与Bun配置SSL证书遇问题求助

解决ElysiaJS + Bun的SSL证书配置问题

方法1:直接用Bun原生HTTPS启动Elysia

Elysia基于Bun运行,Bun本身支持HTTPS服务,无需依赖Node的https模块。直接在listen方法中传入SSL配置即可:

import { Elysia } from 'elysia';
import fs from 'fs';

const app = new Elysia()
  .get('/', () => 'Hello HTTPS!')
  // 这里添加你的其他API路由
  .listen({
    port: 8443,
    tls: {
      key: fs.readFileSync('/etc/letsencrypt/live/myurl.com/privkey.pem'),
      cert: fs.readFileSync('/etc/letsencrypt/live/myurl.com/fullchain.pem')
    }
  });

console.log(`HTTPS Server running on ${app.server?.url}`);

原理:Bun的listen方法内置tls参数,直接传入证书和密钥文件内容,就能让Elysia以HTTPS模式启动,不需要额外创建服务器实例。

方法2:Nginx反向代理(生产环境推荐)

生产环境更建议用Nginx处理SSL,同时还能实现负载均衡、请求转发等功能,步骤如下:

  1. 安装Nginx
    在DigitalOcean Droplet上执行命令:
sudo apt update && sudo apt install nginx
  1. 配置Nginx反向代理
    创建或修改站点配置文件(例如/etc/nginx/sites-available/myurl.com):
server {
    listen 80;
    server_name myurl.com www.myurl.com;

    # 自动将HTTP请求重定向到HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name myurl.com www.myurl.com;

    # 指定SSL证书路径
    ssl_certificate /etc/letsencrypt/live/myurl.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/myurl.com/privkey.pem;

    # 反向代理到本地Elysia服务
    location / {
        proxy_pass http://localhost:3000; # 这里填Elysia运行的HTTP端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
  1. 启用配置并重启Nginx
# 启用配置
sudo ln -s /etc/nginx/sites-available/myurl.com /etc/nginx/sites-enabled/
# 检查配置语法
sudo nginx -t
# 重启Nginx生效
sudo systemctl restart nginx
  1. 启动Elysia服务
    正常启动Elysia在HTTP端口即可,无需处理SSL:
import { Elysia } from 'elysia';

const app = new Elysia()
  .get('/', () => 'Hello World!')
  .listen(3000);

console.log(`Server running on ${app.server?.url}`);

注意事项

  • 确保Let's Encrypt证书路径正确,且Nginx进程拥有读取证书文件的权限(默认Let's Encrypt会配置好权限)。
  • 如果用Bun直接启动HTTPS,需要在DigitalOcean防火墙中开放8443端口的入站流量。
  • 生产环境建议用PM2或systemd管理Elysia进程,避免服务意外中断。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 09:05:15