介绍

在阿里云上配置SSL证书
前端和后端都使用docker
前端镜像中使用了nginx
后端镜像中是springboot项目jar包

域名购买

在这里插入图片描述

域名备案

在这里插入图片描述

SSL证书

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

配置

  1. 服务器上创建/project目录
  2. xcrj-admin.jar上传到/project目录
  3. 上传前端打包dist到/project目录
  4. 下载的证书上传到/project目录
  5. /project目录下创建以下文件

back-dockerfile

# 基础镜像
FROM moxm/java:1.8-full
# 工作目录:自动cd到这个工作目录,不存在将会创建
WORKDIR /xcrj-one
# 参数
ARG JAR_FILE=./xcrj-admin.jar
# 镜像构建时执行。用于拷贝文件,只能拷贝docker build context下的文件
COPY ${JAR_FILE} app.jar
# 声明暴露端口
EXPOSE 8080
# 环境变量。-Xms表示初始堆大小,-Xmx表示最大堆大小,java.security.egd作用加快随机数产生过程
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"
# 服务器内网IP,用作连接此服务器中部署的mysql和redis
ENV SYS_HOST_IP=172.23.110.86
# 容器运行时执行
CMD sleep 30; java -jar app.jar $JAVA_OPTS

web-dockerfile

FROM nginx:perl
RUN mkdir -p /xcrj-web/dist
WORKDIR /xcrj-web
COPY ./dist /xcrj-web/dist/
EXPOSE 80

default.conf

server {
    listen       80;
    listen  [::]:80;
	# 域名
    server_name www.xcrj.com;
    #重定向,将所有请求重定向为https
    rewrite ^(.*)$ https://${server_name}$1 permanent; 
}

server {
    #监听443 https默认端口
    listen 443 ssl; 
    #配置域名	
    server_name www.xcrj.com; 
    #配置证书位置
    ssl_certificate /cert/7681536_www.xcrj.com.pem;
    #配置证书位置
    ssl_certificate_key /cert/7681536_www.xcrj.com.key;  
	#ssl会话超时时间
    ssl_session_timeout 5m;
	#ssl密码
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    #表示使用的加密套件的类型,TLS协议的类型
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3; 
    ssl_prefer_server_ciphers on;
    #反向代理配置
    root   /xcrj-web/dist;
    index  index.html;
    
	#首页地址
    location / {
        root   /xcrj-web/dist;
        index index.html;
    }
	#后端地址
    location /prod-api/ {
		#后端域名和端口
        proxy_pass http://172.23.110.86:8080/;
        proxy_set_header  Host $http_host;
        proxy_set_header  X-Real-IP  $remote_addr;
        proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header  X-Forwarded-Proto $scheme;
    }
}

start.sh

#!/bin/bash
sudo docker stop xcrj-back
sudo docker rm xcrj-back
sudo docker rmi xcrj-back:1.0.0
sudo rm -rf ./back/data
sudo docker build -f back-dockerfile -t xcrj-back:1.0.0 .
sudo docker run --name xcrj-back -v /project/back/data:/xcrj-one/data -v /project/back/logs:/xcrj-one/logs  -p 8080:8080 -d xcrj-back:1.0.0
sleep 60
sudo docker stop xcrj-web
sudo docker rm xcrj-web
sudo docker rmi xcrj-web:1.0.0
sudo rm -rf ./web/nginx
sudo mkdir -p ./web/nginx  ./web/nginx/log
sudo cp ./default.conf ./web/nginx/
# 证书所在目录
sudo cp -r ./cert ./web/nginx/
sudo docker build -f web-dockerfile -t xcrj-web:1.0.0 .
# 挂载证书所在目录
sudo docker run --name xcrj-web -v /project/web/nginx/default.conf:/etc/nginx/conf.d/default.conf -v /project/web/nginx/log/:/var/log/nginx -v /project/web/nginx/cert:/cert -p 443:443 -p 80:80 -d xcrj-web:1.0.0

注意

  1. default.conf
  2. start.sh中启动前端镜像时开启443端口
  3. 阿里云安全组默认开启了80和443端口

问题

localhost问题:

  • 可能是浏览器缓存原因,清除下即可
  • 可能是docker镜像缓存原因导致default.conf没有被更新
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐