- 需求https,已有备案经过域名 - 腾讯云服务器,因此从腾讯云上申请了免费的https证书(阿里云服务器上阿里云申请) - 服务器安全组打开443端口 - 纯docker部署(nginx、java后端) - 服务器上准备好nginx镜像:docker pull nginx - 使用docker-compose编排
域名解析至目标服务器,在目标服务器新增目录nginx-config
,用于存放nginx配置文件。下载https证书,它有多种部署方案的证书选择(Apache、IIS、Nginx、Tomcat),将Nginx使用的证书储存至目标服务器
nginx-config
目录下,它包含两个文件:html
1_[这里是你的域名].top_bundle.crt 2_[这里是你的域名].key
在
nginx-config
目录下新建文件:
docker-compose.yml service.conf
当前服务器nginx-config目录结构:
/root/nginx-config/docker-compose.yml /root/nginx-config/service.conf /root/nginx-config/1_[这里是你的域名]_bundle.crt /root/nginx-config/2_[这里是你的域名].key
修改docker-compose.yml,完整代码:java
version: '3' services: nginx: image: nginx:latest ports: - 443:443 volumes: - "/root/nginx-config/service.conf:/etc/nginx/conf.d/service.conf" - "/root/nginx-config/1_[这里是你的域名]_bundle.crt:/etc/nginx/1_[这里是你的域名]_bundle.crt" - "/root/nginx-config/2_[这里是你的域名].key:/etc/nginx/2_[这里是你的域名].key" java: image: java:8 ports: - 8088:8088 volumes: - "/root/java/[java打包后的jar包].jar:/root/java/[java打包后的jar包].jar" command: ["java", "-jar", "/root/java/java打包后的jar包.jar"]
docker-compose.yml解读nginx
两个docker镜像
nginx: image: nginx:latest java: image: java:8
nginx使用443端口。左边为宿主机端口,右边为容器端口。 https使用的是443端口,http使用的是80端口java服务使用 8088端口docker
ports: - 443:443 ports: - 8088:8088
挂载文件至容器。nginx配置文件和java配置文件分别挂载至对应的容器下。
volumes: - "/root/nginx-config/service.conf:/etc/nginx/conf.d/service.conf" - "/root/nginx-config/1_[这里是你的域名]_bundle.crt:/etc/nginx/1_[这里是你的域名]_bundle.crt" - "/root/nginx-config/2_[这里是你的域名].key:/etc/nginx/2_[这里是你的域名].key" volumes: - "/root/java/[java打包后的jar包].jar:/root/java/[java打包后的jar包].jar"
commond,在容器内执行的shell命令。这里为启动服务。
command: ["java", "-jar", "/root/java/java打包后的jar包.jar"]
修改service.conf:shell
upstream javaserver { server [宿主机内网ip]:[后端java服务docker容器的端口]; } server { listen 443 ssl; server_name [这里是你的域名]; ssl_certificate 1_[这里是你的域名]_bundle.crt; # https的证书文件路径 ssl_certificate_key 2_[这里是你的域名].key; # https的证书文件路径 ssl_session_timeout 5m; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; # 这里是腾讯云的配置,阿里云的ssl_ciphers请上阿里云查看 ssl_prefer_server_ciphers on; location /api { # 接口前缀为/api开头的,所有转发至java后端服务,能够配置多个location proxy_pass http://javaserver; proxy_set_header Host $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; } location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
启动服务:后端
进入docker-compose.yml所在目录 $ cd ngixn-config 前台启动,能够看到log: $ docker-compose up 后台启动: $ docker-compose up -d 关闭服务: $ docker-compose down
附:
从本地上传文件至服务器命令:api
scp -r [本地文件路径][服务器登陆名]@[服务器公网IP]:[服务器路径]
例子:安全
scp -r /Users/lnxbyu/JsProject/docker-compose.yml root@188.88.88.88:/root/nginx-config/docker-compose.yml
欢迎纠错。服务器