Docker部署Nginx和配置https

Docker部署Nginx和配置https

Nginx部署过程

sh 复制代码
# 防火墙开放需要使用的端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
# 重新加载
firewall-cmd --reload

# 拉取nginx镜像
docker pull nginx:1.18.0
# 创建挂载目录
mkdir -p /root/nginx/conf
mkdir -p /root/nginx/log
mkdir -p /root/nginx/html
# 生成容器,将生成的配置文件等复制到挂载目录
docker run --name nginx -p 80:80 -d nginx:1.18.0
docker cp nginx:/etc/nginx/nginx.conf /root/nginx/conf/nginx.conf
docker cp nginx:/etc/nginx/conf.d /root/nginx/conf/conf.d
docker cp nginx:/usr/share/nginx/html /root/nginx/

# 然后删除当前容器,最后挂载目录运行
# -u root 以root用户运行容器,非必须
# --privileged=true 给于容器访问挂载目录的权限
docker rm -f nginx
docker run \
-u root --privileged=true \
-p 80:80 \
--restart=always \
--name nginx \
-v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /root/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /root/nginx/log:/var/log/nginx \
-v /root/nginx/html:/usr/share/nginx/html \
-d nginx:1.18.0

配置https

nginx使用https,需要一个SSL/TLS证书,有几种方式可以获得证书:

  • 从证书颁发机构(CA)购买:如Symantec, GoDaddy, Let's Encrypt等。
  • 使用Let's Encrypt的免费证书:Let's Encrypt是一个提供免费、自动化和开源证书的证书颁发机构(CA)。你可以使用Certbot等工具自动获取和续订证书。
  • 使用openssl生成自签证书。

这里使用第三种方式。

sh 复制代码
# 生成私钥
openssl genrsa -out privatekey.pem 2048
# 证书签名请求:一路回车,但Common Name需要填入你的服务器 IP或者域名
openssl req -new -key privatekey.pem -out private-csr.pem
# 自签名并创建证书
openssl x509 -req -days 365 -in private-csr.pem -signkey privatekey.pem -out certificate.pem

# 注意:docker部署时,需要把证书文件放入容器内,用容器内的地址读取
# 复制证书文件到容器内
docker cp privatekey.pem nginx:/xxx/xxx/
docker cp certificate.pem nginx:/xxx/xxx/
# 进入容器
docker exec -it nginx bash

# 可以将证书导入到本地解决浏览器提示不安全:win+r -> certmgr.msc,将证书导入到"个人->证书"里

然后在/root/nginx/conf/conf.d/下面创建一个xxx.conf文件,内容如下:

复制代码
nginx
~~~nginx
server {
    listen 433 ssl;

    ssl_certificate     /xxx/xxx/certificate.pem;
    ssl_certificate_key  /xxx/xxx/privatekey.pem;
    location / {
        proxy_pass  http://127.0.0.1:3000;
        proxy_set_header Host $proxy_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

最后docker restart nginx就大功搞成了。

相关推荐
qq_356408668 小时前
Kubernetes Loki 日志收集系统部署文档 (读写分离模式 + Ceph S3 + Nginx 日志分离)
ceph·nginx·kubernetes
情绪总是阴雨天~9 小时前
Docker 基础概念完全指南:从零理解容器化技术
docker·容器
战南诚10 小时前
HTTP 与 HTTPS 的区别:从原理到实战详解
网络协议·http·https
杨浦老苏10 小时前
自托管文件同步与协作平台Sync-in
docker·文件管理·群晖·协作
齐齐大魔王10 小时前
OpenSSL 原理
运维·网络·nginx·ssh·ssl
tianyuanwo11 小时前
企业级容器镜像管理实践:基于JFrog Artifactory的私有镜像仓库搭建与配置指南
docker·云原生·registry
最后一支迷迭香11 小时前
Mac使用docker下的两个冷知识
macos·docker·容器
亚空间仓鼠11 小时前
Docker容器化高可用架构部署方案(十八)
docker·容器·架构
木雷坞12 小时前
Open WebUI 连不上 Ollama:Docker Compose 排查记录
人工智能·docker·ai编程
蜀道山老天师12 小时前
Docker 部署 Nginx Proxy Manager:可视化反向代理 + SSL 证书一键配置
nginx·docker·ssl