Nginx+Docker 部署HTTPS站点+身份认证 完整实操一键部署脚本

将以下脚本保存为 nginx-https-auth.sh,执行 bash nginx-https-auth.sh 即可自动完成所有部署步骤(密码默认123456,可自行修改)

bash 复制代码
#!/bin/bash
# Nginx+Docker 部署HTTPS站点+身份认证 一键部署脚本(CentOS 7/8)

# 1. 安装依赖与Docker
echo "=== 开始安装依赖与Docker ==="
yum install -y openssl httpd-tools firewalld docker-ce && echo "依赖安装完成"
systemctl start docker && systemctl enable docker && echo "Docker启动并设置开机自启完成"

# 2. 配置防火墙
echo "=== 开始配置防火墙 ==="
systemctl start firewalld && systemctl enable firewalld
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-service=https
firewall-cmd --reload && echo "防火墙配置完成,已放行80、443端口"

# 3. 生成自签名SSL证书
echo "=== 开始生成SSL证书 ==="
mkdir -p /data/nginx/ssl
cd /data/nginx/ssl
openssl genrsa -out server.key 2048 && echo "私钥生成完成"
openssl req -new -x509 -key server.key -out server.crt -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=test/OU=test/CN=localhost" && echo "自签名证书生成完成(有效期10年)"

# 4. 创建认证账号密码(可修改admin和123456为自定义账号密码)
echo "=== 开始创建身份认证账号 ==="
mkdir -p /data/nginx/auth
htpasswd -bc /data/nginx/auth/.htpasswd admin 123456 && echo "认证账号创建完成,账号:admin,密码:123456"

# 5. 准备Nginx配置文件
echo "=== 开始准备Nginx配置 ==="
mkdir -p /data/nginx/conf
cat > /data/nginx/conf/nginx.conf <<EOF
server {
    listen 80;
    server_name localhost;
    return 301 https://\$host\$request_uri;
}

server {
    listen 443 ssl;
    server_name localhost;

    ssl_certificate     /etc/nginx/ssl/server.crt;
    ssl_certificate_key /etc/nginx/ssl/server.key;

    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;
    }
}
EOF
echo "Nginx配置文件创建完成"

# 6. 启动Docker Nginx容器
echo "=== 开始启动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 && echo "Nginx容器启动完成"

# 7. 校验配置
echo "=== 开始校验配置 ==="
docker exec nginx-https nginx -t && echo "配置校验通过,部署完成!" || echo "配置校验失败,请检查配置文件"

# 提示信息
echo "=== 部署总结 ==="
echo "访问地址:https://服务器IP"
echo "认证账号:admin"
echo "认证密码:123456"
echo "常用命令:docker restart nginx-https(重启容器)、docker exec nginx-https nginx -s reload(重载配置)"
相关推荐
xixingzhe29 小时前
nginx无网络升级
服务器·nginx
Lyra_Infra9 小时前
MySQL Docker 误删恢复:binlog PITR
mysql·docker·命令行
wxchyy11 小时前
手把手教你入门云计算(二):这些技术改变了世界,你也能轻松掌握
hadoop·阿里云·docker·云原生·华为云·云计算·运维开发
CZIDC11 小时前
华为服务器TS200-2280 V2 iBMC导入SSL证书后问题案例分析
服务器·https·ssl
名字还没想好☜12 小时前
Prometheus 告警实战:写 alerting rules、用 Alertmanager 做路由分组与抑制
运维·前端·javascript·docker·kubernetes·prometheus
请你吃div12 小时前
Node 后端项目 Docker 自动部署教程(GitHub + 宝塔 + Self-hosted Runner)
后端·docker·node.js
百年੭ ᐕ)੭*⁾⁾13 小时前
Redash部署指南(Windows docker部署)
大数据·windows·docker·数据可视化·redash
2401_8346369913 小时前
Docker 容器化技术全解:从镜像构建到容器编排的完整教案2
运维·docker·容器
鱼很腾apoc15 小时前
【Linux】第13期 详解应用层协议HTTP+Cookie/Session+HTTPS
linux·服务器·c++·学习·http·https
伞伞悦读16 小时前
【第12期】Windows 开发环境备份与恢复:软件、环境变量、Git、conda 和 Docker 卷完整方案
git·docker·conda