初始环境

腾讯云服务器

阿里云域名 + 阿里云免费SSL

docker环境

Nginx服务器

ps: Nginx挂着主机目录很重要

申请SSL证书

登录阿里云,搜索SSL

容器中安装 vim 容器中安装证书_docker


容器中安装 vim 容器中安装证书_容器中安装 vim_02

申请成功后点击下载(由于我的是Nginx服务器,下载Nginx相关证书)

容器中安装 vim 容器中安装证书_Nginx_03

解压并更改名称后得到两个文件(key 和 pem)

容器中安装 vim 容器中安装证书_Nginx_04

查看Nginx挂载目录

docker inspect nginx

容器中安装 vim 容器中安装证书_Nginx_05

我的配置文件挂载目录为 "/usr/nginx/config/:/etc/nginx/",

那么就可以在这里进行配置Nginx

首先在/usr/nginx/config/下创建cert文件夹,用于存放证书文件

我这里已经创建并上传,不再重复创建上传

[root@VM-12-11-centos config]# cd /usr/nginx/config/
 [root@VM-12-11-centos config]# pwd
 /usr/nginx/config
 [root@VM-12-11-centos config]# ls
cert conf.d fastcgi_params mime.types modules nginx.conf scgi_params uwsgi_params
 [root@VM-12-11-centos config]#[root@VM-12-11-centos config]# cd cert/
 [root@VM-12-11-centos cert]# ls
 part_wenmeng.key part_wenmeng.pem wenmeng.key wenmeng.pem

编写Nginx认证HTTPS配置文件

java项目访问配置

server {
    listen 443 ssl;
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name part.wenmeng.online; #需要将yourdomain替换成证书绑定的域名。
    ssl_certificate cert/part_wenmeng.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
    ssl_certificate_key cert/part_wenmeng.key; #需要将cert-file-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.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;
    location / {
       proxy_pass https://54.4.44.56:9999; #服务器内网地址
	   add_header Access-Control-Allow-Origin *;
    }
}

静态文件配置(其中location中内容不同)

server {
    listen 443 ssl;
    #配置HTTPS的默认访问端口为443。
    #如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
    #如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
    server_name part.wenmeng.online; #需要将yourdomain替换成证书绑定的域名。
    ssl_certificate cert/part_wenmeng.pem; #需要将cert-file-name.pem替换成已上传的证书文件的名称。
    ssl_certificate_key cert/part_wenmeng.key; #需要将cert-file-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.1 TLSv1.2 TLSv1.3; #表示使用的TLS协议的类型。
    ssl_prefer_server_ciphers on;
    location / {
		charset utf-8;
        default_type 'text/html';
        root /usr/share/nginx/html/online;
        index index.html;
        add_header Access-Control-Allow-Origin *;
    }
}

将http转为HTTPS请求配置

server {
    listen 80;
    server_name part.wenmeng.online; //更换为你的域名
    rewrite ^(.*)$ https://part.wenmeng.online; //更换为你的域名
}