從 node服務部署,到https配置與nginx轉發

從 node服務部署,到https配置與nginx轉發

最近在搞小程序,小程序的服務必須使用https協議,以前沒學過這些,因而寫下這篇博客,記錄本身遇到的問題node

本篇博客解決這些問題,服務器的登錄配置、項目的部署、https證書的申請、nginx部署https與轉發本地服務linux

經過私鑰登錄服務器

  • 騰訊雲重裝系統
  • 登錄設置選擇使用ssh密鑰設置
  • 選擇ssh密鑰,若是沒有則建立ssh密鑰
  • 點擊開始安裝
  • 下載生成好的私鑰到本地
  • 使用終端進行配置nginx

    // 賦予私鑰文件僅本人可讀權限
    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安裝nodegit

nvm install 10.14.2

給服務器安裝git

因爲個人代碼託管在github上,給服務器安裝git方便管理代碼github

在linux安裝gitnpm

克隆項目到服務器

git clone https://github.com/lfhwnqe/wechat_server.git

進入項目根目錄安裝依賴小程序

cd wechat_server
npm install

啓動項目進行鏈接緩存

npm start

如今項目在本7001端口啓動bash

此時訪問服務器公網ip:7001就能夠訪問到服務器上啓動的服務服務器

把域名映射到服務器

  • 進入域名管理界面(我用的是阿里的)
  • 點擊解析設置
  • 點擊修改
  • 在記錄值處修改成服務器的公網ip
  • 保存設置,而後訪問你的域名有服務監聽80端口的話就能夠獲得響應了

申請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證書
  • https://freessl.cn得到的ca證書是 .pem後綴的證書文件,證書文獲取成功後,就能夠在 Nginx 配置文件裏配置 HTTPS 了。

配置nginx,域名啓用https,經過nginx把https請求轉發到本地node服務

要開啓 HTTPS 服務,在配置文件信息塊(server block),必須使用監聽命令 listen 的 ssl 參數和定義服務器證書文件和私鑰文件,同時經過設置location模塊把發送到網頁的請求轉發到服務器上的node服務,以下所示:

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上
原文地址

相關文章
相關標籤/搜索