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

时间:2021-10-11 04:05:46

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

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

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

环境

Centos6.8  Nginx  yum安装

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

然后将下面代码添加进去

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

添加后如下显示

server {
listen ;
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/.pem;
ssl_certificate_key /etc/nginx/conf.d/.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. TLSv1.;
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访问,我没试验