docker安装nginx并配置ssl的方法步骤
最近想在吃灰了一年多的服务器上,安装一下docker,结果始终找不到合适的yum源,后来经过一番百度才知道,原来centos8要凉了,所以好多镜像站都移除了CentOS 8的源。
没办法,短暂的思考之后,决定重装一下操作系统,换成centos7.9,好在服务器上没啥重要东西,只要给blog挪个窝就行了。
重装系统之后,安装docker过程非常顺利。
开始安装nginx。
1、直接拉取最新的nginx镜像
docker pull nginx
2、新建一些目录,把nginx容器内的相关文件夹挂载到宿主机上,主要方便改写配置,其次是删除容器,这些文件不会丢失
mkdir -p /usr/local/nginx/{conf,html,logs,ssl}
3、启动一个nginx容器,用来cp一些文件,放到步骤2新建的文件夹里面
docker run --name nginx -p 80:80 -d nginx
4、把容器内的配置文件复制到宿主机内
可以简单看一下容器内文件夹详情,顺便说个题外话,直接使用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、修改配置文件

可以看到配置文件有两个,现在只需要修改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:挂载宿主机的目录,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录;
- -d:后台运行;
- --restart=always:重启docker时,自动重启改容器;
说到这里,有一个点需要注意一下,就是上面的defaul.conf文件中,出现的绝对路径都是容器内的路径,而不是宿主机的,比如说配置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://zz.feitang.co/server/30969.html
您可能感兴趣的文章
- 12-20Kubernetes中使用临时容器进行故障排查的方法
- 12-20Nginx设置HTTPS的方法步骤
- 12-20二进制方式安装 Kubernetes1.18.3版本实现脚本
- 12-20Nginx工作模式及代理配置的使用细节
- 12-20ZooKeeper分布式协调服务设计核心概念及安装配置
- 12-20Kubernetes部署可视化地图的十个步骤
- 12-20关于docker清理Overlay2占用磁盘空间的问题(亲测有效)
- 12-20Docker compose配置文件写法及命令使用示例
- 12-20openwrt安装docker并启动的操作方法
- 12-20云原生Kubernetes初始化容器Init使用教程


阅读排行
推荐教程
- 12-07一文教你怎么选择Tomcat对应的JDK版本
- 12-07新版Eclipse集成Tomcat时找不到server选项的解决方法
- 12-06IIS7 应用程序池自动回收关闭的解决方案
- 12-05Windows Server 2019安装VMware
- 12-05Windows服务器默认IE浏览器无法下载文件的解决方法
- 12-05Docker安装Jenkins全过程
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法





