- 需求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
歡迎糾錯。服務器