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

生产环境下Nuxt.js 3.9 SSL配置(无需反向代理)

解决Nuxt.js 3.9生产构建集成SSL证书(无需反向代理)

核心配置思路

Nuxt 3生产环境基于Nitro服务器运行,需直接配置Nitro的HTTPS参数(而非开发环境的devServer配置)。结合你的Docker/K8s场景,具体步骤如下:


1. 配置nuxt.config.js

在项目根目录的nuxt.config.js中添加Nitro服务器的HTTPS配置,支持硬编码路径或环境变量动态注入:

export default defineNuxtConfig({
  nitro: {
    server: {
      https: {
        key: process.env.SSL_PRIVATE_KEY_PATH || '/app/certs/privkey.pem',
        cert: process.env.SSL_CERT_PATH || '/app/certs/fullchain.pem'
      },
      port: process.env.HTTPS_PORT || 8443
    }
  }
})

2. 调整Docker Entrypoint脚本

确保entrypoint脚本完成以下操作,适配证书获取与权限:

# 创建证书存储目录
mkdir -p /app/certs

# 下载SSL证书(替换为你的实际curl命令)
curl -o /app/certs/fullchain.pem https://your-cert-source/cert
curl -o /app/certs/privkey.pem https://your-cert-source/key

# 注入环境变量(与nuxt.config配置对应)
export SSL_PRIVATE_KEY_PATH="/app/certs/privkey.pem"
export SSL_CERT_PATH="/app/certs/fullchain.pem"
export HTTPS_PORT=8443

# 赋予证书可读权限(避免Nuxt进程无权限读取)
chmod 644 /app/certs/*

# 启动Nuxt生产服务
node .output/server/index.mjs

3. 处理端口权限问题

若使用443等1024以下端口(默认HTTPS端口),需额外配置权限:

  • Docker环境:启动容器时添加--cap-add=NET_BIND_SERVICE参数,或在Dockerfile中使用USER root(不推荐)
  • Kubernetes环境:在Deployment的securityContext中配置权限:
    securityContext:
      capabilities:
        add: ["NET_BIND_SERVICE"]
    

4. 局域网自签名证书适配

如果使用自签名证书,需确保局域网内客户端信任该证书:

  • 将根证书导入客户端设备的系统信任存储
  • 测试阶段可临时忽略浏览器证书警告(生产环境禁用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 09:02:29