目录
准备工作
首先拥有一台服务器,这里我使用的是阿里云服务器,并且在服务器上安装了nginx;
其次有一个已经备案的域名;
最后在阿里云上申请两个免费的SSL证书;
Q:为什么需要两个SSL证书呢?
A:如今的项目基本都是前后端分离的,所以我们需要一个主域名用来访问我们的前端页面,还需要一个接口域名(域名命名规范:api.xxxx.xx)用来请求后端的接口,这样,就两个域名,所以需要两个SSL证书。
Step1:
从阿里云下载两个证书。
注意:我们要使用Nignx反向代理,所以要选择Nginx类型的证书进行下载
得到了两个压缩包,解压,会得到两个文件(一共四个,一个压缩包对应两个)
然后把".pem"改成“.cer”
Step2:
连接到服务器,找到nginx安装的根目录(我的是“/usr/local/nginx”)
随后在conf文件夹中新建一个cert的文件夹,用来存放刚刚解压的四个文件
Step3:
在这一步之前,我们首先要将我们的后端jar包,从服务器上启动。
在确保jar包开启之后,我们来修改nginx的配置文件nginx.conf,来实现反向代理
添加以下代码
upstream tomcatservers{
server ip地址:端口号;
}
server {
listen 80;
server_name xxx.xxx.xxx;
rewrite ^(.*)$ https://$host$1;
location / {
proxy_pass http://tomcatservers;
}
}
server {
listen 443; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
server_name xxx.xxx.xxx; #将xxx.xxx.xxx修改为您证书绑定的域名,例如:www.example.com。
root html;
ssl on;
index index.html index.htm;
ssl_certificate cert/domain name.cer; #将domain name.pem替换成您证书的文件名称。
ssl_certificate_key cert/domain name.key; #将domain name.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;
location / {
proxy_pass http://tomcatservers;
}
}
#以上是配置接口域名的
#接下来是配置主域名的,两个格式都是基本一样的
server {
listen 80;
server_name xxx.xxx.xx;
rewrite ^(.*)$ https://$host$1;
location / {
root /home/tuling-mall/dist; #站点目录。
index index.html index.htm;
}
}
server {
listen 443; #配置HTTPS的默认访问端口号为443。此处如果未配置HTTPS的默认访问端口,可能会造成Nginx无法启动。Nginx 1.15.0以上版本请使用listen 443 ssl代替listen 443和ssl on。
server_name xxx.xxx.xxx; #将xxx.xxx.xxx修改为您证书绑定的域名,例如:www.example.com。
root html;
ssl on;
index index.html index.htm;
ssl_certificate cert/domain name.cer; #将domain name.pem替换成您证书的文件名称。
ssl_certificate_key cert/domain name.key; #将domain name.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;
location / {
root /home/tuling-mall/dist; #站点目录。
index index.html index.htm;
}
}
nginx反向代理强大的地方就是,不同的域名可以共用一个端口号,所以使用http访问都通过80端口(来代理springboot内置tomcat的接口),使用https访问都通过443端口。
Step4:
重启nginx
./nginx -s reload
到此为止,就可以通过https来访问域名了,大功告成