需求:项目原来时http://开始的访问路径,现有需求改为https开头的访问路径

申请一个自己的域名

好多的云服务提供商都可以提供域名申请和SSL证书申请

我是找了个免费的注册网站(新网 ​​http://www.xinnet.com/​​)

SSL证书也有免费的

先说注册域名

新网 ​​http://www.xinnet.com/​​注册的域名,新用户搞活动时可以申请一个免费一年的域名,域名申请需要实名认证,我们测试使用申请一个根域名便宜的域名即可,比如xyz结尾的

https证书申请验证_html

 

 域名有了以后还需要在控制台添加域名解析才能用

https证书申请验证_官网_02

 

根据官网的提示提交解析,新增域名解析时新增自己申请的域名和www.域名绑定IP地址即可

申请SSL证书

可以到这个​​https://letsencrypt.osfipin.com/​​网站申请SSL证书,有效期为3个月到期重新申请即可;也可以到​​https://freessl.cn/​​去申请我用的第一个网站申请的。

申请证书的方式有好多种,有付费的也有免费的,有命令式的也有图形式,下面这个时最简单的图形操作,新手容易理解上手,缺点就是到期需要手动重新申请

申请的时候按照人家官网提示操作即可,过程中需要验证域名的有效性,也是按照提示验证就行,

这里我有个疑问就是人家提供的验证方式有俩种,其中一种是需要在网站绝对路径下新增文件夹并拷贝一个txt验证文件进去,因为我不清楚网站的绝对路径是啥,

就选择了另外一种验证方式,到期再次申请的时候还要验证。

验证俩次,验证通过后就可以申请SSL证书了,并下载证书

https证书申请验证_html_03

 

 证书下载完成后,解压压缩文件,修改证书和密钥的后缀,然后放在ngnix/config/的一个文件夹下面即可,放在其他地方ngnix启动时找不到ssl证书

https证书申请验证_ssl证书_04

 

 

ngnix配置

默认的一下配置可以管它们,我这里配置了负载均衡的代理和ssl证书



worker_processes  1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
upstream test{
ip_hash;
server 127.0.0.1:9001;
server 127.0.0.1:9002;
}
server {
listen 80;
#监听域名
server_name www.test97.xyz;
rewrite ^(.*)$ https://$server_name$1 permanent; #这句是代表 把http的域名请求转成https
location / {
proxy_pass http://test;
proxy_set_header Host $host;#将请求头转发给后端服务器
proxy_set_header X-Forward-For $remote_addr;#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Server $host;

}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# HTTPS server
server {
listen 443 ssl;
server_name www.test97.xyz;
ssl_certificate cert/fullchain.pem;
ssl_certificate_key cert/private.key;
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 10m;
location / {
proxy_pass http://test;
}
}

}


启动ngnix或者重启

start ngnix.exe 或者nginx.exe -s reload

把项目跑起来,在浏览器用https访问一下试试

我的测试项目在自己电脑上运行,所以以上适用于windows使用,linux可以自己研究下,linux申请证书更容易直接使用命令,并且可以设置定时任务自己更新证书

测试时页面引用http的请求可以暂时更改浏览器的安全设置来实现