nginx+tomcat部署前端VUE项目和后端springboot项目并以https访问(二)
接上一篇SpringBoot+Tomcat+Coding+Jenkins自动化构建部署(一),上篇文章完成了后端自动化构建部署,这篇文章继续完成前端VUE项目的自动化构建部署并以https的方式访问。
·
接上一篇SpringBoot+Tomcat+Coding+Jenkins自动化构建部署(一),上篇文章完成了后端自动化构建部署,这篇文章继续完成前端VUE项目部署并以https的方式访问。
一、部署Tomcat,后端接口服务以https访问
- 首先使用启动一个Tomcat容器,然后使用docker ps查看该容器的ID。
docker run -it -d --name=tomcat tomcat:8
- 将容器中的目录复制到宿主机。
docker cp a4a4688e0f9e:/usr/local/tomcat/webapps/ /root/data/tomcat/
docker cp a4a4688e0f9e:/usr/local/tomcat/conf/ /root/data/tomcat/
docker cp a4a4688e0f9e:/usr/local/tomcat/logs/ /root/data/tomcat/
- 将该容器删除,重新启动一个容器。
docker rm -f a4a4688e0f9e
docker run -it -d --name=tomcat -p 8403:8443 -p 8080:8080 \
-v /root/data/tomcat/webapps/:/usr/local/tomcat/webapps/ \
-v /root/data/tomcat/conf/:/usr/local/tomcat/conf/ \
-v /root/data/tomcat/logs/:/usr/local/tomcat/logs/ tomcat:8
- 进入Tomcat容器内部,将webapps.dist中的文件复制到webapps中,复制完成按ctrl+p+q退出容器。
docker exec -it a0245807c1a9 bash
cp -r webapps.dist/* webapps
- 将提前准备好的Tomcat域名证书文件复制到容器中,我这里Tomcat的证书文件夹中是pfx文件。
docker cp /root/data/certificate/learning.***.cn_tomcat a0245807c1a9:/usr/local/tomcat/certificate/
- 将构建好的war包放到webapps文件中,配置server.xml。
<!--新增https配置-->
<Connector
protocol="org.apache.coyote.http11.Http11NioProtocol"
port="8443" maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile="/usr/local/tomcat/certificate/learning.***.cn_tomcat/learning.***.cn.pfx"
keystorePass="123456"
clientAuth="false" sslProtocol="TLS"/>
<!--对不同项目带对应的项目名访问-->
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true">
<Context docBase="project1" path="/project1" reloadable="true"/>
<Context docBase="project2" path="/project2" reloadable="true"/>
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t "%r" %s %b" />
</Host>
- 现在可以在外部用https访问后端接口,项目1访问的接口前缀是
https://learning.***.cn/project1
,项目2访问的接口前缀是https://learning.***.cn/project2
- 重启docker容器,使上面的配置生效。
docker restart a0245807c1a9
二、部署Nginx,前端页面以https访问
- 首先启动一个nginx容器
docker run --name nginx -d -it nginx
- 将nginx容器中的目录复制到宿主机本地。
docker cp 46e345a19158:/usr/share/nginx/html /root/data/nginx/
docker cp 46e345a19158:/etc/nginx/nginx.conf /root/data/nginx/
docker cp 46e345a19158:/var/log/nginx /root/data/nginx/logs/
docker cp 46e345a19158:/etc/nginx/conf.d /root/data/nginx/
- List item
删除nginx容器,再重新启动一个nginx容器。
docker run --name nginx -d -p 80:80 -p 443:443 -p 8443:8443 --privileged=true \
-v /root/data/nginx/html:/usr/share/nginx/html \
-v /root/data/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /root/data/nginx/logs/nginx:/var/log/nginx \
-v /root/data/nginx/conf.d:/etc/nginx/conf.d nginx
- 将nginx的证书文件复制到容器中。
docker cp /root/data/certificate/learning.***.cn_nginx 45929c04b699:/usr/local/certificate/
- 在conf.d文件中新建一个配置文件,配置前端访问路由,并配置后端统一接口访问地址。
server{
listen 443 ssl;
server_name learning.***.cn;
ssl on;
ssl_certificate /usr/local/certificate/learning.***.cn_nginx/learning.***.cn_bundle.pem;
ssl_certificate_key /usr/local/certificate/learning.***.cn_nginx/learning.***.cn.key;
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;
location / {
root /usr/share/nginx/html/project1/learning_***/dist/;
index index.html;
}
#配置后端统一访问接口
location /project1/ {
proxy_pass https://learning.***.cn:8403;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /css/ {
root /usr/share/nginx/html/project1/dist/static/;
}
location /js/ {
root /usr/share/nginx/html/project1/dist/static/;
}
- 重启nginx,使配置生效。
docker restart 45929c04b699
更多推荐
已为社区贡献2条内容
所有评论(0)