網(wǎng)站首頁 編程語言 正文
最近想在吃灰了一年多的服務器上,安裝一下docker,結(jié)果始終找不到合適的yum源,后來經(jīng)過一番百度才知道,原來centos8要涼了,所以好多鏡像站都移除了CentOS 8的源。
沒辦法,短暫的思考之后,決定重裝一下操作系統(tǒng),換成centos7.9,好在服務器上沒啥重要東西,只要給blog挪個窩就行了。
重裝系統(tǒng)之后,安裝docker過程非常順利。
開始安裝nginx。
1、直接拉取最新的nginx鏡像
docker pull nginx
2、新建一些目錄,把nginx容器內(nèi)的相關文件夾掛載到宿主機上,主要方便改寫配置,其次是刪除容器,這些文件不會丟失
mkdir -p /usr/local/nginx/{conf,html,logs,ssl}
3、啟動一個nginx容器,用來cp一些文件,放到步驟2新建的文件夾里面
docker run --name nginx -p 80:80 -d nginx
4、把容器內(nèi)的配置文件復制到宿主機內(nèi)
可以簡單看一下容器內(nèi)文件夾詳情,順便說個題外話,直接使用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、停止當前nginx容器,并刪除
docker stop a25b9f301349 docker rm a25b9f301349
6、生成證書并放到宿主機ssl目錄下面
7、修改配置文件
可以看到配置文件有兩個,現(xiàn)在只需要修改default.conf文件就可以了。原因嘛可以看下圖:
vim conf/nginx.conf
就是說不管叫不叫default.conf,只要在conf.d目錄下面,都會被加載
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、啟動新的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
簡單解釋一下:
- -v:掛載宿主機的目錄,冒號":"前面的目錄是宿主機目錄,后面的目錄是容器內(nèi)目錄;
- -d:后臺運行;
- --restart=always:重啟docker時,自動重啟改容器;
說到這里,有一個點需要注意一下,就是上面的defaul.conf文件中,出現(xiàn)的絕對路徑都是容器內(nèi)的路徑,而不是宿主機的,比如說配置ssl時:
ssl_certificate /etc/nginx/ssl/telami.cn.pem; ssl_certificate_key /etc/nginx/ssl/telami.cn.key;
只不過在run時,-v /usr/local/nginx/ssl:/etc/nginx/ssl/,把目錄掛載起來了,讓容器可以讀到證書,如果說改成這樣的配置:
ssl_certificate /usr/local/nginx/ssl/telami.cn.pem;
nginx是無法啟動的,會報錯找不到文件。
原文鏈接:https://juejin.cn/post/7080351596973916196
相關推薦
- 2022-07-30 HadoopWindows下客戶端環(huán)境配置
- 2022-05-29 .NET?Core通過dotnet?publish命令發(fā)布應用_實用技巧
- 2022-08-12 python使用pandas實現(xiàn)篩選功能方式_python
- 2022-04-14 C語言的分支和循環(huán)語句你了解嗎_C 語言
- 2022-06-09 詳解Python中*args和**kwargs的使用_python
- 2022-10-31 一篇文章教會你使用gs_restore導入數(shù)據(jù)_數(shù)據(jù)庫其它
- 2022-07-07 Pytorch卷積神經(jīng)網(wǎng)絡遷移學習的目標及好處_python
- 2022-09-24 C#/VB.NET實現(xiàn)PPT或PPTX轉(zhuǎn)換為圖像功能_C#教程
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支