【Docker安装Nginx】:使用docker安装Nginx,并配置https!

本文记录初次学习nginx的心得,经过本人验证,是完全有效的!

一、下载Nginx镜像

因为本文是使用docker安装Nginx,所以没有用到apt、yum等包管理器。

如果你有docker desktop这类图形化界面,那么直接搜索下载官方Nginx最新镜像即可。

如果没有这类图形化界面,直接使用docker命令安装也是一样的。

docker pull nginx

默认拉取最新版本。

二、处理Nginx的配置文件

2.1 创建相关目录

conf目录存放配置文件,html为存放html资源的目录,log存放nginx 的日志文件,ssl目录存放ssl证书用于配置https。

mkdir -p /home/nginx/{conf,html,log}

2.2 启动Nginx

docker run --name nginx -d -p 9080:80 nginx:latest

2.3 拷贝相关Nginx配置文件

docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf #复制配置文件
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /home/nginx #复制基本的html界面

2.4 关闭并删除当前Nginx容器

docker stop nginx
docker rm nginx

2.5 重新运行

docker run --name nginx -p 9080:80 \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-d nginx:latest

有几个可选参数,根据自己实际情况添加:

-p 9443:443 配置https端口映射
--privileged=true 开启最高权限, 避免没有对应权限时报错
--restart=always 自启动

2.6 访问测试

访问:http://你的服务器ip(localhost也可以),能过访问到以下页面说明已经安装成功,接下来你可以通过修改配置文件/home/nginx/html/index.html,来显示你想展示的页面。

截至目前,Nginx已经成功安装并启动运行!下面介绍如果给Nginx配置https访问。

三、配置https连接

2.1 创建ssl目录

在上文中,我们创建了conf、html、log三个目录,再创建一个ssl目录即可。

mkdir -p /home/nginx/ssl

2.2 生成证书

2.2.1 开发/测试环境

生成一个自签名证书:

openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /home/nginx/ssl/self.key \
-out /home/nginx/ssl/self.crt \
-subj "/CN=localhost"

这样后续就能通过 https://localhost 访问(但浏览器会警告“证书不受信任”)。

我用的是这种自签名证书来测试,因为是仅作为学习使用。

2.2.2 生产环境

要让 HTTPS 正常工作且浏览器不报错,你必须:

  1. 拥有一个由可信 CA 签发的证书(如 Let's Encrypt 免费证书)
  2. 将证书和私钥挂载到容器
  3. 在 Nginx 配置中正确引用

例如使用 Let's Encrypt:

证书通常位于

/etc/letsencrypt/live/your-domain/fullchain.pem

/etc/letsencrypt/live/your-domain/privkey.pem

然后挂载并配置即可。

PS:生产环境下我没有进行测试,需要的话可以自行查阅相关资料进行操作。

2.3 创建https配置文件

Nginx 默认会自动加载以下目录中的配置文件:

/etc/nginx/conf.d/*.conf(官方 Docker 镜像和多数 Linux 发行版使用)

所以我们在宿主机的/home/nginx/conf/conf.d下创建一个名为https.conf的文件(文件名位*.conf都可以)。

touch https.conf # 创建https.conf配置文件
sudo chmod 666 https.conf # 添加可写权限,如果需要的话

然后用将下面配置粘贴到https.conf即可:

server {
    listen 443 ssl;
    server_name localhost;  # 或你的域名

    ssl_certificate /etc/ssl/self.crt;
    ssl_certificate_key /etc/ssl/self.key;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

这里需要注意:

ssl_certificate /etc/ssl/self.crt;
ssl_certificate_key /etc/ssl/self.key;

这两个配置的目录需要看你服务器的具体路径,我的是在/etc/ssl,有的可能是/etc/nginx/ssl

2.4 启动Nginx

docker run --name nginx -p 9080:80 -p 9443:443 \
-v /home/nginx/html:/usr/share/nginx/html \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/ssl:/etc/ssl \
-d nginx:latest

大功告成,成功通过https进行访问!!!

四、总结

虽然在实习有接触过Nginx、OpenResty,但一直没机会学习Nginx。因此,想着记录一下学习一个技术栈的首要环节:配置环境。希望可以帮助到同为学习新技术的同学们~

温馨提示:如果本文对你有帮助,欢迎点赞、收藏、关注!如有疑问,评论区留言讨论~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值