node项目部署https服务

博客讲述了网页配置HTTPS证书后,Node部署为HTTP服务,调用接口时前端报错的问题。作者分享了解决方法,包括Node部分可能需配置HTTPS打开端口,使用PM2管理器启动项目,以及在Apache中进行相关配置,配置完重启服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

难以形容这份喜悦了,这次是真的一杯茶一包烟一个bug改一天了
先描述我的问题,我的网页配置了https证书,但是node部署后是http服务,在调用接口时候前端报错:“Mixed Content: The page at ‘https://XXX’ was loaded over HTTPS, but requested an in…”
因为之前遇到过所以知道他是因为用了http访问了https接口或者反过来导致的,一波操作加上看了错误的方法受到了误导搞得心态很崩,在放弃的边缘终于找到了解决的方法!
好了不废话了开始展示了,我的服务器是apache服务,前后端是vue+node+express:

首先是node部分,网上说需要配置一下https打开端口,我没做测试不写这个可不可以,但我觉得应该可以不需要(一开始没改服务器写了也不生效),以防万一写一下吧。

//文件处理模块
let fs = require('fs')
//http 和 https服务模块
let http = require('http')
let https = require('https')
//配置你的证书,注意这里的证书是nginx的,不管你服务器用的是apache还是什么这里只要放nginx就好了
const httpsOption = {
    key: fs.readFileSync("./https/4432850_www.czjdream.com.key"),
    cert: fs.readFileSync("./https/4432850_www.czjdream.com.pem")
}
let express = require('express');
let app = express();
//在指定端口启动你的项目
http.createServer(app).listen(8082);
https.createServer(httpsOption, app).listen(8088);

然后我用的是node管理器是PM2管理器,node项目找个地扔服务器上,然后在PM2里选择文件目录点击启动就可了。
然后配置你的apache配置相关(我用的是宝塔面板,这里就默认你已经配置好了SSL证书):
apache/conf/extra/httpd-ssl.conf:

# 设置监听你的端口,调用接口时就是https://xxx.com:8089
Listen 8089
# 新建一个VirtualHost,写上监听的端口
<VirtualHost *:8089>     
    ServerName   blogMaster
    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on
    SSLCertificateFile C:/BtSoft/apache/cert/xxxxx.crt
    SSLCertificateKeyFile C:/BtSoft/apache/cert/xxxxx.key 
    SSLCertificateChainFile C:/BtSoft/apache/cert/xxxxx.crt
	
        SSLProxyEngine on

          Proxyrequests off
<Proxy *>
         Order deny,allow
         Allow from all
 </Proxy>

<Directory />
		    Options FollowSymLinks ExecCGI
		    AllowOverride All
		    Require all granted
</Directory>

<Location />
	  # 这里是你在node里配置启动的端口,我的是8082
      ProxyPass http://localhost:8082/
      ProxyPassReverse http://localhost:8082/
</Location>
</VirtualHost>     

配置完记得重启apache服务。

哇心态崩掉,我弄了一天结果就这么几行解决,就这?就这?

本项目参考了http://blog.youkuaiyun.com/aerchi/article/details/73605496
但是大部分为自己原创总结,在此记录

### 将 Node.js 项目部署到生产环境 #### 使用 PM2 进程管理器优化 Node.js 应用程序 为了确保应用程序在生产环境中稳定运行,推荐使用 PM2 来管理和监控 Node.js 应用。PM2 提供了自动重启、负载均衡等功能,能够有效提升应用的可用性和性能[^5]。 安装全局 PM2 并启动服务器脚本: ```bash npm install pm2 -g pm2 start server.js --name "blog" ``` 设置开机自启以保障服务持久在线: ```bash pm2 startup pm2 save ``` #### 实现容器化部署提高可移植性与一致性 对于希望进一步简化部署流程的情况,建议采用 Docker 技术来打包 Node.js 应用及其依赖项。这不仅有助于创建一致性的执行环境,还能方便地迁移至不同的主机或云平台之上[^1]。 编写 `Dockerfile` 文件定义镜像构建过程: ```dockerfile FROM node:alpine WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . EXPOSE 8080 CMD ["node", "server.js"] ``` 构建并推送 Docker 镜像至仓库以便后续拉取使用: ```bash docker build -t yourusername/your-app-name . docker push yourusername/your-app-name ``` #### 加强安全性防护措施防止潜在威胁 考虑到 Web 开发中的各种安全挑战,在实际部署前务必采取必要的防御手段保护系统免受攻击。具体做法包括但不限于启用 HTTPS 协议加密传输通道;定期更新软件版本修补已知漏洞;严格校验输入参数预防 SQL 注入等恶意行为的发生[^4]。 配置 Nginx 反向代理增强网络层隔离效果的同时支持 SSL/TLS 终止功能: ```nginx server { listen 443 ssl; server_name example.com; ssl_certificate /etc/nginx/certs/example.crt; ssl_certificate_key /etc/nginx/certs/example.key; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值