node服务部署到服务器,给网站配置域名,网站改为https协议,通过nginx转发网页请求到本地node服务
-
登录服务器,使用私钥登陆
- 腾讯云重装系统
- 登陆设置选择使用ssh密钥设置
- 选择ssh密钥,如果没有则创建ssh密钥
- 点击开始安装
- 下载生成好的私钥到本地
-
使用终端进行配置
// 赋予私钥文件仅本人可读权限 chmod 400 <下载的与云服务器关联的私钥的绝对路径> // 运行以下远程登录命令 ssh -i <下载的与云服务器关联的私钥的绝对路径> <username>@<hostname or ip address>
-
给服务器装nvm管理node版本
// 下载nvm wget https://github.com/cnpm/nvm/archive/v0.23.0.tar.gz // 解压nvm tar -xf v0.23.0.tar.gz // 进入目录 cd nvm-0.23.0/ // 安装nvm ./install.sh // 安装后执行 source ~/.bash_profile
-
使用nvm安装node
nvm install 10.14.2
- 给服务器安装git
由于我的代码托管在github上,给服务器安装git方便管理代码
-
克隆项目到服务器
git clone https://github.com/lfhwnqe/wechat_server.git
-
进入项目根目录安装依赖
cd wechat_server npm install
-
启动项目进行连接
npm start
现在项目在本7001端口启动
-
把域名映射到服务器
- 进入域名管理界面(我用的是阿里的)
- 点击解析设置
- 点击修改
- 在记录值处修改为服务器的公网ip
- 保存设置,然后访问你的域名有服务监听80端口的话就可以得到响应了
-
在服务器生成https证书,启用https服务
- 先申请一个免费https证书
-
在服务器运行一下命令,通过openssl生成csr和私钥
openssl req -new -newkey rsa:2048 -sha256 -nodes -out linuoblog.cn.csr -keyout linuoblog.cn.key -subj "/C=CN/ST=ShenZhen/L=ShenZhen/O=NUO Inc./OU=Web Security/CN=linuoblog.cn"
下面是上述命令相关字段含义:
- C:Country ,单位所在国家,为两位数的国家缩写,如: CN 就是中国
- ST 字段: State/Province ,单位所在州或省
- L 字段: Locality ,单位所在城市 / 或县区
- O 字段: Organization ,此网站的单位名称;
- OU 字段: Organization Unit,下属部门名称;也常常用于显示其他证书相关信息,如证书类型,证书产品名称或身份验证类型或验证内容等;
- CN 字段: Common Name ,你的网站域名;
- 如果使用https://freessl.cn获取证书,使用openssl生成 csr 文件后,在页面选择csr生成,并粘贴生成的csr内容到页面,然后通过该网站的验证方式,验证所有者,即可获得ca证书
生成 csr 文件后,提供给 CA 机构,签署成功后,就会得到一个 .pem后缀的证书文件,、证书文获取成功后,就可以在 Nginx 配置文件里配置 HTTPS 了。
-
配置nginx,通过nginx把https请求转发到本地node服务
要开启 HTTPS 服务,在配置文件信息块(server block),必须使用监听命令
listen
的 ssl 参数和定义服务器证书文件和私钥文件,如下所示:worker_processes auto; http { #配置共享会话缓存大小,视站点访问情况设定 ssl_session_cache shared:SSL:10m; #配置会话超时时间 ssl_session_timeout 10m; server { listen 443 ssl; server_name linuoblog.cn; #设置长连接 keepalive_timeout 70; #HSTS策略 add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always; #证书文件 ssl_certificate full_chain.pem; # 证书的路径 #私钥文件 ssl_certificate_key linuoblog.cn.key; # 私钥的路径 location / { # 这里是把链接代理到本机的7001端口 proxy_pass http://127.0.0.1:7001; } } } events { worker_connections 1024; ## Default: 1024 }
配置完成后启动nginx
nginx
这个时候,访问自己的域名就能看到https服务了。同时也通过nginx把网页端的请求转发到了服务器本地的server上