运维项目实战:Nginx+Docker 部署HTTPS站点+身份认证

环境:CentOS 7/8、Docker、OpenSSL、htpasswd

一、前置环境安装

bash 复制代码
# 1.安装依赖与工具
yum install -y openssl httpd-tools firewalld

# 2.安装Docker(CentOS 7/8通用)
yum install -y docker-ce
systemctl start docker
systemctl enable docker

二、防火墙配置

bash 复制代码
# 启动防火墙并设置开机自启
systemctl start firewalld
systemctl enable firewalld

# 放行80(HTTP)、443(HTTPS)端口,立即生效并永久保存
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload

(简单粗暴:systemctl mask firewalld,直接永久关闭防火墙)

三、OpenSSL生成自签名SSL证书

bash 复制代码
# 创建证书存放目录,避免路径不存在报错
mkdir -p /data/nginx/ssl
cd /data/nginx/ssl

# 生成私钥(无密码,生产环境可添加密码增强安全性)
openssl genrsa -out server.key 2048

# 生成自签名证书(有效期10年,3650天),执行后按提示输入信息即可(可直接回车默认)
openssl req -new -x509 -key server.key -out server.crt -days 3650

四、创建Nginx认证账号密码

bash 复制代码
# 创建认证文件存放目录
mkdir -p /data/nginx/auth

# 创建用户admin,密码123456(可修改admin为自定义用户名,123456为自定义密码)
htpasswd -bc /data/nginx/auth/.htpasswd admin 123456

五、Nginx配置文件准备

bash 复制代码
# 创建Nginx配置目录
mkdir -p /data/nginx/conf

新建配置文件 /data/nginx/conf/nginx.conf,内容如下:

bash 复制代码
server {
    listen 80;
    server_name localhost;
    # 强制HTTP跳转HTTPS,避免未加密访问
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name localhost;

    # 绑定SSL证书(路径对应容器内挂载路径)
    ssl_certificate     /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    # HTTPS安全配置,禁用低版本TLS,启用强加密算法
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;
    ssl_prefer_server_ciphers on;

    # 开启身份认证,弹出登录框
    auth_basic "Please Login";
    auth_basic_user_file /etc/nginx/auth/.htpasswd;

    # 站点根目录(容器内默认目录,可自定义挂载本地目录)
    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }
}

六、Docker 启动Nginx容器(核心命令)

bash 复制代码
# 后台运行Nginx容器,挂载配置、证书、认证文件,端口映射,设置开机自启
docker run -d \
--name nginx-https \
-p 80:80 \
-p 443:443 \
-v /data/nginx/conf/nginx.conf:/etc/nginx/conf.d/default.conf \
-v /data/nginx/ssl:/etc/nginx/ssl \
-v /data/nginx/auth:/etc/nginx/auth \
--restart always \
nginx:stable

七、配置校验 & 服务管理

bash 复制代码
# 进入容器校验Nginx配置(无报错即正常)
docker exec nginx-https nginx -t

# 重载Nginx配置(修改配置后执行,无需重启容器)
docker exec nginx-https nginx -s reload

# 常用容器管理命令
# 停止容器
docker stop nginx-https
# 启动容器
docker start nginx-https
# 重启容器
docker restart nginx-https
# 查看容器运行状态
docker ps -a | grep nginx-https

八、访问测试

  1. 浏览器访问:https://服务器IP(注意是https,不是http)

  2. 弹出登录框,输入账号密码:

    1. 账号:admin

    2. 密码:123456

  3. 成功进入Nginx默认页面,说明HTTPS加密+身份认证已生效,如下图:

输入密码后可跳转nginx默认页面

相关推荐
java_logo13 分钟前
2026 Docker 国内镜像加速配置教程
运维·docker·容器·docker镜像·docker镜像源·docker镜像加速·docker镜像国内库
搜狐技术产品小编202322 分钟前
破局与重构:纯端侧 Android 自动化引擎的尝试与未来推演
android·运维·重构·自动化
三十..34 分钟前
Ceph分布式存储核心技术精要与运维实践指南
运维·分布式·ceph
tianyuanwo1 小时前
Jenkins × Gerrit 集成:自动触发构建的全流程解析
运维·servlet·jenkins
IT策士1 小时前
Docker从0到1再到 Kubernetes 实战:第15篇Compose 中的服务依赖、健康检查与启动顺序
docker·容器·kubernetes
Waay1 小时前
K8s Deployment 滚动更新与回滚深度详解(含踩坑实录+生产选型原理)
云原生·容器·kubernetes
“码”力全开1 小时前
深度解析:基于 Docker 与边缘计算的 AI 视频管理平台架构——打通 GB28181/RTSP 协议与“源码交付”的高效集成方案
人工智能·docker·边缘计算
顾默@1 小时前
双系统Ubuntu18.04升级22.04,安装docker进行openclaw安装
运维·docker·容器
木卫二号Coding1 小时前
打包容器有两种方式
docker
杨充1 小时前
1.1 数据编码设计原理
linux·运维·网络·底层原理·数据编码