(七) Docker 运行 nginx 并配置 SSL 证书

https 增加了网络访问的安全性,本文介绍一下使用免费的工具生成 SSL 证书,以及在 nginx 上进行配置的基本方法

环境准备-安装git

在 linux 环境下,首先需要安装 git

#安装 git
yum –y install git

#设置裸仓库,learngit.git 是自定义的名字
cd /你喜欢的文件路径
mkdir git
cd git
git init --bare learngit.git

#创建git用户名赋予密码
useradd git
passwd git

#赋予git用户权限
chown -R git:git learngit.git

#禁用git用户shell登录(一定要禁用)
vi /etc/passwd
#一般在最后一行
git:x:1000:1000::/home/git:/usr/bin/git-shell
生成免费的 SSL 证书-Let’s Encrypt

Let’s Encrypt is a free, automated, and open certificate authority (CA), run for the public’s benefit. (Let’s Encrypt 是一个免费的、自动化的、开放的证书颁发机构(CA),为公众的利益而运作。)
官网地址:https://letsencrypt.org/

  • 获得 SSL证-通过网页

你可直接从网页来操作 https://www.sslforfree.com/,但这不是本文要介绍的,所以你也可以忽略。

  • 获得SSL 证书

通过一些命令,我们可以为我们的域名生成 SSL 证书,需要提前准备好 域名、邮箱(这个证书只有90天的有效时间,到期会邮件通知你,貌似有自动更新证书的方法),关闭你服务器上 80 端口的服务,否则无法获得你想要的 SSL 证书哦。

#找到你安装 git 仓库的文件夹啊
git clone https://github.com/certbot/certbot

#打开 certbot
cd certbot

#最关键的一步
./certbot-auto certonly --standalone --email 
你的邮箱 -d www.域名1.com -d www.域名2.com

# mac
./get_ssl_cert.sh xxx@bbb.net xxx.cn

这样之后你就可以在目录 /etc/letsencrypt下看到证书了。
真正重要的两个文件:
/etc/letsencrypt/live/www.域名1.cn/fullchain.pem
/etc/letsencrypt/live/www.域名1.cn/privkey.pem

为 nginx 容器配置 SSL 证书

需要对
(六) Docker 修改容器的内容—— 容器 nginx 反向代理宿主机 tomcat
中讲到的 default.conf 进行修改(希望你还记得,这是 nginx 的配置文件)。
我们先简化处理

server{
	listen 80;
	listen 443 ssl;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}

然后启动一个 nginx 容器,注意需要增加 SSL 文件的路径

docker run -p 80:80 -p 443:443 --name nginxlog \
-v /usr/java/docker/nginxlog/log/:/var/log/nginx:rw \
-v /usr/java/docker/nginxlog/conf.d/:/etc/nginx/conf.d:rw \
-v /etc/letsencrypt:/etc/letsencrypt:rw \
-d nginx
运行效果

这里写图片描述

这里 80 和 https 是可以同时访问的,如果你想屏蔽掉 http 的80 ,可以使用下面的写法,即 ssl on,然后在启动容器的时候 -p 80:80 也可以去掉。

server{
	#listen 80;
	listen 443;
	ssl on;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}
http 和 https 的统一处理

在上面的配置中,80 端口是无法访问的,那么这个时候我们就有两种处理方式,一种是同时保留 http 和 https 的访问,一种是 http 的访问自动转到 https 的访问

  • 同时保留 http 和 https
server{
	listen 80;
	listen 443 ssl;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}
  • http 自动跳转 https

对于 80 的访问自动转为 https ,server_name只能写一个

server {
    listen 80;
    server_name www.域名1.cn;
    return 301 https://$server_name$request_uri;
}

server{
	listen 443;
	ssl on;
	ssl_certificate  /etc/letsencrypt/live/www.域名1.cn/fullchain.pem;
	ssl_certificate_key  /etc/letsencrypt/live/www.域名1.cn/privkey.pem;
}
参考链接

[1].https://www.cnblogs.com/liter7/p/6581344.html
[2].https://blog.youkuaiyun.com/baidu_19473529/article/details/80868632
[3].https://www.jianshu.com/p/5f9bd492f186
[4].https://www.cnblogs.com/nuccch/p/7681592.html

使用Docker安装Nginx配置SSL证书的步骤如下: 1. 准备SSL证书:根据不同的云服务商,证书文件的后缀可能有所不同。腾讯云的证书文件后缀为.crt和.key,阿里云的证书文件后缀为.pem和.key。确保证书文件正确可用。 2. 下载最新的Nginx镜像:使用以下命令下载最新的Nginx镜像: ``` docker pull nginx ``` 3. 创建目录:创建几个目录,用于挂载Nginx容器内的配置文件和日志文件。使用以下命令创建目录: ``` mkdir -p /usr/local/nginx/{conf,html,logs,ssl} ``` 4. 启动一个Nginx临时容器:使用以下命令启动一个Nginx临时容器,配置文件复制到主机上: ``` docker run --name nginx-temp -d nginx docker cp nginx-temp:/etc/nginx/nginx.conf /usr/local/nginx/conf/nginx.conf docker rm -f nginx-temp ``` 5. 上传SSL证书:将SSL证书上传到服务器的指定目录,例如将证书文件复制到/usr/local/nginx/ssl目录下。 6. 修改nginx.conf配置文件:编辑/usr/local/nginx/conf/nginx.conf文件,配置SSL证书的路径。确保路径是在容器内的地址,而不是主机的地址。 7. 正式启动Nginx:使用以下命令启动Nginx容器,将挂载目录和端口映射配置好: ``` docker run --name nginx -p 80:80 -p 443:443 \ -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/logs:/var/log/nginx \ -v /usr/local/nginx/ssl:/etc/nginx/ssl \ --privileged=true -d --restart=always nginx ``` 8. 检查Nginx是否成功启动:使用以下命令检查Nginx容器是否成功启动: ``` docker ps ``` 以上是使用Docker安装Nginx配置SSL证书的步骤。请根据实际情况进行操作。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [docker安装nginx配置ssl证书](https://blog.youkuaiyun.com/LuoHuaX/article/details/127320361)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值