摘要:由于上面我們已經新建了一個配置文件,這里就直接將反向代理的配置寫在里面通過配置,我們反向代理到了端口的服務。六最后本文中,我們學習了如何通過快速搭建環境,并對其配置證書和反向代理,讓網站能夠以協議來訪問。
歡迎關注個人微信公眾號: 小哈學Java, 每日推送 Java 領域干貨文章,關注即免費無套路附送 100G 海量學習、面試資源喲!!一、背景個人網站: https://www.exception.site/docker/how-to-config-ssl-with-docker-nginx
小哈最近收到阿里云短信,提示個站 www.exception.site 的云盾 SSL 證書(Https 證書)即將到期,需要趕快續費,不然無法繼續使用 Https 協議來訪問網站!
這個 SSL 證書當時用的是阿里云免費型的,有效期為 1 年,到期后, 如果想繼續使用這個證書,就得續費,而且費用還不低!
其實,要想繼續使用 Https 協議,我們可以在阿里云上再次申請一張 SSL 證書就可以了,時間一年,嗨呀,又能免費用一年。
本文小哈就主要介紹如何在 Ngnix 上配置 SSL 證書,從而讓我們的網站能夠使用 Https 來訪問,另外再附帶說一下如何配置反向代理。
二、Docker 快速安裝&搭建 Ngnix 環境小哈的個站 Ngnix 搭建在容器當中,也就順便說一下如何通過 Docker 快速安裝&搭建 Ngnix 環境。
2.1 下載 Nginx 鏡像docker pull nginx:alpine
PS:我這里用的是 alipne 輕量級的鏡像.
下載完成后,通過 docker images 命令檢查一下鏡像是否下載成功:
2.2 先以簡單的方式運行鏡像docker run -d -p 80:80 --name nginx nginx:alpine
-p 80:80: 將容器的 80 端口映射到宿主機的 80 端口上;
-d: 以后臺方式運行鏡像;
--name: 指定容器的名稱為 nginx;
命令執行完成后,通過 docker ps命令確認一下容器是否啟動成功。確認成功后,再訪問一下 80 端口,看看 nginx 服務是否啟動成功:
2.3 復制相關配置文件至宿主機復制運行中 nginx 相關配置文件到宿主機的指定路徑下:
# 復制名稱為 nginx 容器中 /etc/nginx/nginx.conf 文件夾到宿主機的 /docker/nginx 路徑下 docker cp nginx:/etc/nginx/nginx.conf /docker/nginx # 復制名稱為 nginx 容器中 /etc/nginx/conf.d 文件到宿主機的 /docker/nginx 路徑下 docker cp nginx:/etc/nginx/conf.d /docker/nginx
復制完成后,查看指定路徑的配置文件,如下:
三、配置 SSL 3.1 免費獲取 SSL 證書訪問鏈接 https://common-buy.aliyun.com/?spm=5176.2020520163.cas.3.4bf91BFD1BFDcm&commodityCode=cas#/buy:
PS: 注意,未注冊阿里云賬號的童鞋,需要先注冊一個賬號喲~
選擇免費 DV SSL 證書 -> 立即購買,完成后,進入阿里云后臺查看:
這里需要申請簽發,填寫相關信息后,等待簽發通過即可。
簽發通過后,我們下載證書:
這里我選擇的是 Ngnix, 當然了,你也可以選擇 Tomcat、Apache、IIS 等。
3.2 解壓上傳到服務器下載下來后,解壓,我們可以看到包含兩個文件:
接下來,我們先在容器的掛載目錄下創建 cert 證書目錄:
將解壓后的兩個文件上傳至該目錄中。
3.3 配置 Ngnix SSL這里需要說一下,小哈運行在 docker 容器中的 nginx 版本,信息如下:
因為我的 nginx 相對版本較高,可能和大家的配置文件目錄有些不同,但整體的沒啥大的問題,該怎么配置,還是怎么配置:
首先創建 ssl.conf 配置文件,專門用來配置 ssl 相關參數:
server { listen 443 ssl http2; server_name exception.site www.exception.site; client_max_body_size 4M; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; ssl on; root html; index index.html index.htm; ssl_certificate /etc/nginx/cert/2256161_www.exception.site.pem; ssl_certificate_key /etc/nginx/cert/2256161_www.exception.site.key; ssl_session_timeout 5m; ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_prefer_server_ciphers on; location / { root /usr/share/nginx/html; index index.html index.htm; 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_pass http://172.17.0.1:8090; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
根據阿里云的文檔說明加上 ssl 相關參數,如 ssl 證書的兩個文件目錄,另外同時監聽 443 端口。
再貼下 defaut.conf 配置文件內容:
server { listen 80; server_name exception.site www.exception.site; return 301 https://$host$request_uri; }
可以看到,主要對 http 80 端口主要做了一下 301 重定向,也就是說,如果前端使用的 http 訪問,這里會重定向到 https 協議。
四、配置反向代理再來說說如何配置反向代理,先通過命令 ifconfig 命令獲取 docker0網卡的 ip 地址:
PS: 因為我需要反向代理的服務部署在本機的 Docker 容器中,所以用的這個 IP,如果你用的外網其他地址,可自行修改。
由于上面我們已經新建了一個 ssl.conf 配置文件,這里就直接將反向代理的配置寫在里面:
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_pass http://172.17.0.1:8090;
通過配置,我們反向代理到了 8090 端口的 Spring Boot 服務。
五、重啟 Nginx 容器先刪除之前啟動的 nginx 容器:
docker rm -f nginx
成功后,回到配置文件的主目錄,執行:
docker run -d -p 80:80 -p 443:443 --name nginx -v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf -v /docker/nginx/conf.d:/etc/nginx/conf.d -v /docker/nginx/logs:/var/log/nginx -v /docker/nginx/cert:/etc/nginx/cert nginx:alpine
參數說明:
-p 80:80 -p 443:443:將容器的 80、443 端口映射到主機的 80、443 端口;
-v /docker/nginx/nginx.conf:/etc/nginx/nginx.conf:將容器中的 /etc/nginx/nginx.conf 文件掛載到宿主機中的 /docker/nginx/nginx.conf 文件;
-v /docker/nginx/conf.d:/etc/nginx/conf.d:將容器中 /etc/nginx/conf.d 目錄掛載到宿主機中的 conf.d 目錄下;
-v /docker/nginx/logs:/var/log/nginx:將容器中的 /var/log/nginx 目錄掛載到宿主機中的 /docker/nginx/logs 目錄下, 用以查看 Nginx 日志;
-v /docker/nginx/cert:/etc/nginx/cert: 將容器中的 /etc/nginx/cert 證書目錄掛載到宿主機中的 /docker/nginx/cert 證書目錄下;
注意:因為我使用的阿里云服務器,同時還需要將 443 端口加入到安全組中,才能保證外界的正常訪問 https 端口
運行命令成功后,通過 https 協議來訪問我們的網站域名 www.exception.site,看看是否能夠正常訪問,并且方向代理到 8090 端口的 Spring Boot 服務上:
OK! 大工告成。
六 、最后本文中,我們學習了如何通過 Docker 快速搭建 Nginx 環境,并對其配置 SSL 證書和反向代理,讓網站能夠以 Https 協議來訪問。希望童鞋們看完本文能夠有所收獲,下期見~
免費分享 | 面試&學習福利資源最近在網上發現一個不錯的 PDF 資源《Java 核心知識&面試.pdf》分享給大家,不光是面試,學習,你都值得擁有!!!
獲取方式: 關注公眾號: 小哈學Java, 后臺回復資源,既可免費無套路獲取資源鏈接,下面是目錄以及部分截圖:
重要的事情說兩遍,關注公眾號: 小哈學Java, 后臺回復資源,既可免費無套路獲取資源鏈接 !!!
歡迎關注微信公眾號: 小哈學Java文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27895.html
摘要:一下載鏡像我這里用的是輕量級的鏡像下載完成后,通過命令檢查一下鏡像是否下載成功二先以簡單的方式運行鏡像以后臺方式運行鏡像指定容器的名稱為命令執行完成后,通過命令確認一下容器是否啟動成功。 歡迎關注個人微信公眾號: 小哈學Java, 文末分享阿里 P8 高級架構師吐血總結的 《Java 核心知識整理&面試.pdf》資源鏈接!!個人網站: https://www.exception.sit...
摘要:一下載鏡像我這里用的是輕量級的鏡像下載完成后,通過命令檢查一下鏡像是否下載成功二先以簡單的方式運行鏡像以后臺方式運行鏡像指定容器的名稱為命令執行完成后,通過命令確認一下容器是否啟動成功。 歡迎關注個人微信公眾號: 小哈學Java, 文末分享阿里 P8 高級架構師吐血總結的 《Java 核心知識整理&面試.pdf》資源鏈接!!個人網站: https://www.exception.sit...
摘要:本文主要說說如何配置阿里云的鏡像加速器。通過修改配置文件來使用加速器執行下面命令驗證一下速度以下載為例,看下速度下載配置了加速器過后,速度終于飚起來了。二快速安裝搭建環境本節中,我們將學習如何通過快速安裝與搭建環境。 歡迎關注個人微信公眾號: 小哈學Java, 優質文章第一時間推送喲!! 個人網站: www.exception.site 小哈今天給大家分享的主題是,如何通過 Docker ...
摘要:基本入門前端掘金作者本文屬于翻譯文章,原文鏈接為。如果如何把應用放在容器中運行掘金本文適合零基礎,且希望使用運行應用的人士。后端掘金使用構建網站。 nginx 基本入門 - 前端 - 掘金作者:villainthr 本文屬于翻譯文章,原文鏈接為 nginx Beginner’s Guide。是至今為止見過最好的 nginx 入門文章。額。。。沒有之一。 這篇教程簡單介紹了 nginx ...
摘要:很多人反應很難訪問,所以轉移到阿里云服務器上,因此做了一次完整的容器部署。在容器化過程中,我們并未配置任何等,只是保留服務所需的配置項而已,而這一部分我們可以放在反向代理層完成。 很多人反應很難訪問 Github Page,所以 ng-alain.com 轉移到阿里云服務器上,因此做了一次完整的 Angular 容器部署。 以下我會闡述 ng-alain 整個過程,其中包括 Docke...
閱讀 1433·2021-09-03 10:29
閱讀 3457·2019-08-29 16:24
閱讀 2010·2019-08-29 11:03
閱讀 1409·2019-08-26 13:52
閱讀 2924·2019-08-26 11:36
閱讀 2785·2019-08-23 17:19
閱讀 559·2019-08-23 17:14
閱讀 811·2019-08-23 13:59