如何为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
相关产品推荐
相关产品推荐

