汪微的博客
zane,做一个有思维的开发者

汪微的博客

个人博客阿里云服务器HTTPS实践,node.js + nginx https实践

2018年04月11日328 browse

一:申请免费证书

申请免费的证书有很多种,比如阿里云https,七牛云,都可以申请到免费的https证书。

二:node.js启动服务使用https模块

参考koa-sslify模块:https://www.npmjs.com/package/koa-sslify

var Koa = require('koa');
var http = require('http');
var https = require('https');
var fs = require('fs');
var path = require(path');
var enforceHttps = require('koa-sslify');
 
var app = new Koa();
let config={
    httpProt:8000,
    httpsProt:8001,
} 

// Force HTTPS on all page 
app.use(enforceHttps());
 
// SSL options 引入自己的https证书
var options = {
  key: fs.readFileSync(path.resolve(__dirname, './server.key')),
  cert: fs.readFileSync(path.resolve(__dirname, './server.crt'))
}
 
// start the server 监听端口
http.createServer(app.callback()).listen(config.httpProt);
https.createServer(options, app.callback()).listen(config.httpsProt);


以上的node.js开启服务根据自己的需求配置,开发时使用http,生产线使用https,也可以同时使用,根据自己需求定制。


三:nginx服务配置

若nginx要支持https服务需要先开启ssl模块,先检测自己的nginx服务是否支持:

查看nginx的模块
/usr/local/nginx/sbin/nginx -V

若有--with-http_ssl_module则支持
configure arguments: --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

如果不支持ssl模块需要先安装ssl模块,参考:已安装nginx支持https配置

nginx配置:

1、把下载好的秘钥放到nginx/conf目录中,可以创建目录cert并放入https秘钥,可用FTP上传文件。

2、配置nginx server选项

cd /usr/local/nginx/conf

vim nginx.conf

新增如下配置:(以下是阿里云https推荐配置)

server {
        listen 80 default;                              #同时支持http https访问
        listen 443 ssl;
        server_name blog.seosiwei.com;                  #服务域名
        root blog;                                      #根目录 此行可无
        ssl_certificate   cert/214586773670023.pem;     #https秘钥
        ssl_certificate_key  cert/214586773670023.key;  #https秘钥
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers on;
        location / {
          #  root html;
          #  index index.html index.htm;
            #这里转发的node.js本地服务,需要注意转发的域名尽可能为https域名
            add_header X-Cache $upstream_cache_status;
            proxy_pass   https://127.0.0.1:18090;
            proxy_redirect  off;
            proxy_cache_key    $uri$is_args$args;
        }
}

四:强制http跳转https

新增如下配置做301永久重定向
server {
    listen       80;
    server_name  blog.seosiwei.com;
    return      301 https://$server_name$request_uri;
}


五:重启nginx服务

nginx配置好之后重启nginx即可

检测配置是否通过
/usr/local/nginx/sbin/nginx -t
重启nginx  
/usr/local/nginx/sbin/nginx -s reload


六:通过http,https访问域名

http:  http://blog.seosiwei.com/

https: https://blog.seosiwei.com/


博主 zane 发表于 2018-04-11 10:30:28,添加在了 nginx 标签下

打赏

您的支持将鼓励我继续努力与分享。

扫码打赏,建议金额1-10元

提醒:打赏金额将直接进此方账号,无法退款,请您谨慎操作。

评论

正在加载验证码......

提交