在阿里云上配置SSL证书
前端和后端都使用docker
前端镜像中使用了nginx
后端镜像中是springboot项目jar包
- 服务器上创建
/project
目录 - xcrj-admin.jar上传到
/project
目录 - 上传前端打包dist到
/project
目录 - 下载的证书上传到
/project
目录 - 在
/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} 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
注意
- default.conf
- start.sh中启动前端镜像时开启443端口
- 阿里云安全组默认开启了80和443端口
localhost问题:
- 可能是浏览器缓存原因,清除下即可
- 可能是docker镜像缓存原因导致default.conf没有被更新
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)