Nginx 配置HTTPS 与Node.js 配置HTTPS方法

前段时间公司网站要求加上HTTPS安全CA证书,公司服务器全是阿里云服务器,并且配有负载均衡,所以选择直接在阿里云购买CA证书,阿里云有一种证书可以免费试用一年,决定申请此证书,阿里云证书需要验证,阿里云有详细教程

配置之后发现所有在HTTPS访问的网站下的所有连接都需要是HTTPS访问,所以还是需要自己进行配置

配置方案记录一下,方便以后自己配置查找

环境

Centos6.8  Nginx  yum安装

首先要将下载的CA证书上传到服务器上面 , 然后打开/etc/nginx/conf.d/自己配置文件名.conf

然后将下面代码添加进去

 ssl_certificate   /etc/nginx/conf.d/214521058020911.pem;#此处为安全成熟的pem文件需要根据自己的实际情况配置路径
    ssl_certificate_key  /etc/nginx/conf.d/214521058020911.key;#同上
    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;

添加后如下显示

server {
    listen       443;
    server_name  自己的域名;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
       try_files $uri $uri/ /index.php?$query_string;
       client_max_body_size 1000m;
    }
    root   项目目录;
    index  index.php;

    ssl_certificate   /etc/nginx/conf.d/214521058020981.pem;
    ssl_certificate_key  /etc/nginx/conf.d/214521058020981.key;
    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;
.....以下省略

然后在后来配置Windows服务器的时候,用的PHPStudy集成环境配置发现还需要加入

SSL  on

重启之后生效。

网站本身需要一个实时数据推送,所以我采用了node.js的socket.io模块进行推送,然后找到配置方法如下

var http = require('http');
var https = require('https');
var fs = require('fs');

var options = {
    key: fs.readFileSync('./214521058020981.key'),//配置自己的证书
    cert: fs.readFileSync('./214521058020981.pem')//同上
}


var server = https.createServer(options).listen(监听端口);
var io = require('socket.io')(server);

此为配置方法,引入时用https://自己域名进行引入即可

注意:同一个服务器无法进行node.js和Nginx同时配置HTTPS,因为占用同一个443端口发生冲突,至于是不是可以采用Nginx来为node.js提供Https访问,我没试验

posted @ 2018-03-03 14:38  倔强新手猿  阅读(1346)  评论(0编辑  收藏  举报