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

如何为Nuxt 3生产环境配置自定义主机的HTTPS(含SSL证书)

Nuxt 3生产环境自定义IP部署HTTPS配置失败问题

问题场景

我在package.json中配置了两个SSL相关脚本:

"scripts": {
  ...
  "dev:ssl": "cross-env NODE_TLS_REJECT_UNAUTHORISED=0 nuxt dev --https --ssl-cert ../cc/my_cert.crt --ssl-key ../cc/my_key.hr.pem --host XX.XXX.X.XX --port XXXX",
  "start:ssl": "cross-env NODE_TLS_REJECT_UNAUTHORISED=0 node .output/server/index.mjs --https --ssl-cert ../cc/my_cert.crt --ssl-key ../cc/my_key.hr.pem --host XX.XXX.X.XX --port XXXX"
}

执行npm run dev:ssl时,开发服务器能正常启用HTTPS,应用运行无问题;但执行npm run start:ssl启动生产环境时,控制台输出'Listening on http::\\[..]:$port',应用仍默认使用HTTP,连接被标记为不安全,无法正常访问。已确认SSL证书和密钥有效。

已尝试的方案

在nuxt.config.ts中直接配置服务器HTTPS,但结果依旧:

import fs from 'fs'
export default defineNuxtConfig({
// ...
  server: {
    host: 'XX.XXX.X.XX',
    port: XXXX,
    https: {
      key: fs.readFileSync('correct_path_to_key.pem'),
      cert: fs.readFileSync('correct_path_to_cert.crt')
    }
  }
// ...
});

补充信息

  • SSL证书已确认有效
  • 仅生产环境的start:ssl脚本存在问题,开发环境正常
  • 需将Nuxt应用部署在自定义IP地址上

解决方案

原因说明

Nuxt 3生产构建后的运行依赖Nitro服务器,它的命令行参数与开发服务器(nuxt dev)不兼容,直接传递--https等参数不会生效。

正确配置方式

方式1:使用Nitro环境变量配置

修改start:ssl脚本,通过环境变量传递HTTPS相关配置:

"start:ssl": "cross-env NODE_TLS_REJECT_UNAUTHORISED=0 NITRO_HTTPS=true NITRO_SSL_CERT=../cc/my_cert.crt NITRO_SSL_KEY=../cc/my_key.hr.pem NITRO_HOST=XX.XXX.X.XX NITRO_PORT=XXXX node .output/server/index.mjs"

方式2:在nuxt.config.ts中配置Nitro选项

直接在Nuxt配置中指定Nitro的服务器参数,构建后自动生效:

import fs from 'fs'
export default defineNuxtConfig({
  // ...
  nitro: {
    server: {
      host: 'XX.XXX.X.XX',
      port: XXXX,
      https: {
        key: fs.readFileSync('../cc/my_key.hr.pem'),
        cert: fs.readFileSync('../cc/my_cert.crt')
      }
    }
  }
  // ...
});

修改后重新执行nuxt build,再运行node .output/server/index.mjs即可启用HTTPS。

方式3:启动时传递Nitro配置参数

如果需要动态指定,可使用--传递Nitro参数(注意参数名前缀为nitro.):

"start:ssl": "cross-env NODE_TLS_REJECT_UNAUTHORISED=0 node .output/server/index.mjs --nitro.https=true --nitro.ssl.cert=../cc/my_cert.crt --nitro.ssl.key=../cc/my_key.hr.pem --nitro.host=XX.XXX.X.XX --nitro.port=XXXX"

验证

启动生产服务器后,控制台应输出类似Listening on https://XX.XXX.X.XX:XXXX的日志,此时访问应用即可正常使用HTTPS。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 13:36:04