docker安裝nginx并配置ssl的方法步驟
最近想在吃灰了一年多的服務(wù)器上,安裝一下docker,結(jié)果始終找不到合適的yum源,后來(lái)經(jīng)過(guò)一番百度才知道,原來(lái)centos8要涼了,所以好多鏡像站都移除了CentOS 8的源。
沒(méi)辦法,短暫的思考之后,決定重裝一下操作系統(tǒng),換成centos7.9,好在服務(wù)器上沒(méi)啥重要東西,只要給blog挪個(gè)窩就行了。
重裝系統(tǒng)之后,安裝docker過(guò)程非常順利。
開(kāi)始安裝nginx。
1、直接拉取最新的nginx鏡像
docker pull nginx
2、新建一些目錄,把nginx容器內(nèi)的相關(guān)文件夾掛載到宿主機(jī)上,主要方便改寫(xiě)配置,其次是刪除容器,這些文件不會(huì)丟失
mkdir -p /usr/local/nginx/{conf,html,logs,ssl}3、啟動(dòng)一個(gè)nginx容器,用來(lái)cp一些文件,放到步驟2新建的文件夾里面
docker run --name nginx -p 80:80 -d nginx
4、把容器內(nèi)的配置文件復(fù)制到宿主機(jī)內(nèi)
可以簡(jiǎn)單看一下容器內(nèi)文件夾詳情,順便說(shuō)個(gè)題外話,直接使用yum安裝nginx-1.20.x版本的話,nginx目錄都是放在/usr/local/nginx下面的,但是docker安裝的還是和老版本nginx一樣的目錄。

docker cp a25b9f301349:/etc/nginx/nginx.conf /usr/local/nginx/conf/ docker cp a25b9f301349:/etc/nginx/conf.d /usr/local/nginx/
5、停止當(dāng)前nginx容器,并刪除
docker stop a25b9f301349 docker rm a25b9f301349
6、生成證書(shū)并放到宿主機(jī)ssl目錄下面

7、修改配置文件

可以看到配置文件有兩個(gè),現(xiàn)在只需要修改default.conf文件就可以了。原因嘛可以看下圖:
vim conf/nginx.conf

就是說(shuō)不管叫不叫default.conf,只要在conf.d目錄下面,都會(huì)被加載
server {
listen 80;
listen [::]:80;
server_name www.telami.cn;
rewrite ^(.*) https://$server_name$1 permanent;
}
server {
listen 443 ssl;
server_name www.telami.cn;
ssl_certificate /etc/nginx/ssl/telami.cn.pem;
ssl_certificate_key /etc/nginx/ssl/telami.cn.key;
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
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;
}
}8、啟動(dòng)新的nginx容器
docker run \ --name nginx \ -p 443:443 -p 80:80 \ -v /usr/local/nginx/logs:/var/log/nginx \ -v /usr/local/nginx/html:/usr/share/nginx/html \ -v /usr/local/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ -v /usr/local/nginx/conf.d:/etc/nginx/conf.d \ -v /usr/local/nginx/ssl:/etc/nginx/ssl/ \ --privileged=true -d --restart=always nginx
簡(jiǎn)單解釋一下:
- -v:掛載宿主機(jī)的目錄,冒號(hào)":"前面的目錄是宿主機(jī)目錄,后面的目錄是容器內(nèi)目錄;
- -d:后臺(tái)運(yùn)行;
- --restart=always:重啟docker時(shí),自動(dòng)重啟改容器;
說(shuō)到這里,有一個(gè)點(diǎn)需要注意一下,就是上面的defaul.conf文件中,出現(xiàn)的絕對(duì)路徑都是容器內(nèi)的路徑,而不是宿主機(jī)的,比如說(shuō)配置ssl時(shí):
ssl_certificate /etc/nginx/ssl/telami.cn.pem; ssl_certificate_key /etc/nginx/ssl/telami.cn.key;
只不過(guò)在run時(shí),-v /usr/local/nginx/ssl:/etc/nginx/ssl/,把目錄掛載起來(lái)了,讓容器可以讀到證書(shū),如果說(shuō)改成這樣的配置:
ssl_certificate /usr/local/nginx/ssl/telami.cn.pem;
nginx是無(wú)法啟動(dòng)的,會(huì)報(bào)錯(cuò)找不到文件。
到此這篇關(guān)于docker安裝nginx并配置ssl的方法步驟的文章就介紹到這了,更多相關(guān)docker安裝nginx配置ssl內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝MySQL及授權(quán)遠(yuǎn)程訪問(wèn)的詳細(xì)教程
Docker是一種流行的容器化平臺(tái),可以簡(jiǎn)化應(yīng)用程序的部署和管理,下面這篇文章主要給大家介紹了關(guān)于Docker安裝MySQL及授權(quán)遠(yuǎn)程訪問(wèn)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-05-05
Docker搭建Redis主從復(fù)制的實(shí)現(xiàn)步驟
本文主要介紹了Docker搭建Redis主從復(fù)制的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-11-11
使用Docker開(kāi)發(fā)python Web 應(yīng)用
本文給大家詳細(xì)講解了如何使用Docker開(kāi)發(fā)python應(yīng)用,特別是WEB應(yīng)用的步驟,Docker本質(zhì)上提供了非常輕量化的VMs,我們可以使用其創(chuàng)建一個(gè)高標(biāo)準(zhǔn)隔離并能大大減少失配的開(kāi)發(fā)和產(chǎn)品環(huán)境。2016-10-10
解決Docker之mysql容器數(shù)據(jù)庫(kù)更改不生效的問(wèn)題
這篇文章主要介紹了解決Docker之mysql容器數(shù)據(jù)庫(kù)更改不生效的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11
dockerfile部署前端vue打包的ist文件實(shí)戰(zhàn)
這篇文章主要為大家介紹了dockerfile部署前端vue打包的ist文件實(shí)戰(zhàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10

