nginx配置https服务
看了自问自答的图灵机器人,想在微信的小程序上搭个能自我聊天,或者查询的小机器人,可是,微信只支持https,而图灵机器人提供的接口只支持http接口,所以只能在中间搭个中转的服务器咯。
一、准备
服务器的话,拿出我那台吃灰的ecs。服务器端的话,还是用我比较了解的node,再配上nginx反向代理。 既然要https,那么证书等这一步也是不能少的。阿里云上正好也有免费的证书提供下载。
首先到证书控制台,点击右上角的购买证书
品牌选择Symantec,保护类型选择一个证书,此时有出现了免费型DV SSL这个选项,选择并购买。
买完这个证书后,会回到证书控制台,对该证书进行补全处理。
等待十分钟左右,证书就好啦。
点击下载,进行证书,私钥公钥的下载。
选择nginx,点击下载。
下载解压后,我们得到两个文件,
文章后面的配置可以作为参考。 这样我们就准备好啦,开始配置nginx。
二、nginx配置
先上传key,在nginx安装目录下(/etc/nginx)下新建了一个cert的文件夹,再使用rz命令将这两个文件读到服务器上去(上传再解压一样)。
我的nginx一开始装好了,这儿就不再演示了。首先到根目录,修改配置文件。
cd /etc/nginx/sites-available/
vi default
修改server中的内容,
server {
listen 80;
listen 443;
ssl on;
server_name www.zhuyuntao.com;
ssl_certificate /etc/nginx/cert/215067043560468.pem;
ssl_certificate_key /etc/nginx/cert/215067043560468.key;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "";
proxy_cache_bypass $http_upgrade;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://127.0.0.1:3000;
}
}
这样就好了,当然ssl_certificate和ssl_certificate_key不要填错反了,server_name记得改成自己的域名,proxy_pass改成自己node程序的地址。
注:如果有问题的化,记得检查下80和443端口是否被其他程序占用了。
三、测试与修改
测试下,打开https://www.zhuyuntao.com/地址,可以正常打开,https就生效了。倘若我们使用http登录,发现出现了400报错,如下:
The plain HTTP request was sent to HTTPS port,大概的意思就是http请求被发送到了https端口了。
http与https共存
我们继续修改配置,将刚才第二行listen 443和第三行ssl on合并成(listen 80别丢了):
listen 443 ssl;
此时再测试时,http和https均可以访问。
强制https
我们只要将http请求跳转到https上就行了。继续在第一份的配置之上修改。 首先删除第一行的listen 80。
在文件最前方新增一个新的server,
server {
listen 80;
server_name www.zhuyuntao.com
return 301 https://$server_name$request_uri;
}
保存后,service nginx restart,重启下nginx,http就能跳转到https上啦。
好了,下面开始玩我的小机器人啦。