踩坑配置HTTPS(docker,nginx,aliyun)
1、購買證書,如果要求的級別不那麼高的話,可以申請Symantec的免費型DV SSL,這個是免費的。
2、證書的申請:如實填寫相關的資訊,很快就可以驗證完成。
3、證書下載:根據伺服器的型別下載相關型別的證書,這裡我選擇的是Nginx型別的。
4、配置nginx:編輯nginx.conf檔案,重啟nginx。
docker 執行nginx的語句,請忽略這亂糟糟的路徑:
docker run -d \
--name nginx \
-p 80:80 -p 443:443 \
-v `pwd`/conf.d:/etc/nginx/conf.d \
-v `pwd`/nginx.conf:/etc/nginx/nginx.conf \
-v `pwd`/html:/etc/nginx/html \
-v `pwd`/cert:/etc/nginx/cert \
nginx
檢視nginx的執行狀態:docker ps|grep nginx
5、驗證:在瀏覽器上輸入你配置的域名,然後你就可以看到一個小鎖的標誌
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
為什麼我配置完成之後,http請求可以正常訪問,https 不能正常訪問??
1、nginx是不是沒有正常監聽443埠?
通過netstat -an 檢視443埠正常監聽。
2、nginx.conf 檔案中關於證書的配置是不是有問題?別人的證書都是***.pem 和***.key 而我的是***.crt和***.key
通過openssl 的命令,把***.crt 轉化成***.pem,上傳到伺服器,然後重新啟動nginx,問題依然沒有解決。:(
後面的事實證明這個好像沒有什麼關係。
3、是不是阿里雲伺服器沒有開啟443埠?
通過阿里雲的控制檯,檢視安全組規則,果然沒有配置。配置上443埠,重啟nginx ,問題就解決了。
4、為什麼我直接按照上面的docker命令,NGINX根本就執行不起來,一起來就掛了?
因為你一開始執行的時候,你在容器外的nginx.conf 和conf.d裡面是空的,導致容器內的nginx的配置檔案也是空的,能跑起來就奇怪了?現在有兩種方法:1、從別的NGINX去抄一個配置檔案過來,包括nginx.conf和conf.d;2、先不掛載配置檔案,直接讓nginx 執行起來,然後使用docker cp 命令把容器內的配置檔案複製出來,然後在使用掛載命令,把複製出來的配置檔案,有對映到容器裡面。
5、一切都按照之前自己總結的步驟去操作,為什麼有不能實現nginx 跳轉呢?
最後知道真相的我眼淚掉下來,我特麼把域名解析給配置錯了……被自己蠢哭,域名解析的IP 是外網IP。