Nginx反向代理https配置解决方案

目录

准备工作

Step1:

Step2:     

Step3:

Step4:


准备工作

        首先拥有一台服务器,这里我使用的是阿里云服务器,并且在服务器上安装了nginx;

        其次有一个已经备案的域名;

        最后在阿里云上申请两个免费的SSL证书;

        Q:为什么需要两个SSL证书呢?

        A:如今的项目基本都是前后端分离的,所以我们需要一个主域名用来访问我们的前端页面,还需要一个接口域名(域名命名规范:api.xxxx.xx)用来请求后端的接口,这样,就两个域名,所以需要两个SSL证书。

Step1:

        从阿里云下载两个证书。

        注意:我们要使用Nignx反向代理,所以要选择Nginx类型的证书进行下载 

        Nginx反向代理https配置解决方案_第1张图片

        得到了两个压缩包,解压,会得到两个文件(一共四个,一个压缩包对应两个)

        

         然后把".pem"改成“.cer”

        

Step2:     

        连接到服务器,找到nginx安装的根目录(我的是“/usr/local/nginx”)

        随后在conf文件夹中新建一个cert的文件夹,用来存放刚刚解压的四个文件

        Nginx反向代理https配置解决方案_第2张图片

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 -t reload

到此为止,就可以通过https来访问域名了,大功告成

你可能感兴趣的:(nginx,https,阿里云)