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就大功搞成了。

相关推荐
m0_748248772 小时前
在 Ubuntu 上安装 Nginx 的详细指南
nginx·ubuntu·postgresql
转身後 默落2 小时前
11.Docker 之分布式仓库 Harbor
分布式·docker·容器
菩提云3 小时前
Deepseek存算分离安全部署手册
人工智能·深度学习·安全·docker·容器
c无序10 小时前
Docker-技术架构演进之路
docker
anddddoooo13 小时前
域内证书维权
服务器·网络·网络协议·安全·网络安全·https·ssl
努力的小T13 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
东风微鸣15 小时前
TTRSS 迁移实战
docker·云原生·kubernetes·可观察性
若云止水16 小时前
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_os_init 函数
运维·nginx
转身後 默落17 小时前
04.Docker 镜像命令
docker·容器·eureka
IT_张三17 小时前
Docker+Kubernetes_第一章_Docker入门
java·docker·kubernetes