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(重载配置)"
相关推荐
nuo5342026 小时前
基础 6 —— Docker 容器数据卷
docker·容器
Sinclair6 小时前
安企CMS的安装-Docker 部署
运维·docker·容器
要开心吖ZSH7 小时前
AI医疗分诊与健康咨询助手agent开发——(4-2)从零到一:我给AI医疗分诊助手加了个“知识库大脑“,终于搞懂了RAG是什么
java·docker·agent·医疗·rag
汪汪大队u8 小时前
【无标题】
运维·docker·kubernetes·prometheus
明月心9529 小时前
https配置
nginx·https配置
spider_xcxc10 小时前
Docker Compose 容器通信详解:同一个 Compose 文件才能互通吗?
docker·容器·k8s·容器化·容器网络
BaiduPHP12 小时前
docker异常断电,出现docker服务,启动失败
docker·容器·eureka
她叫我大水龙12 小时前
nginx 编译指南:静态编译 + 动态编译
运维·nginx
Icoolkj13 小时前
ICOOLKJ 前后端分离项目完整部署文档(MySQL8.4+Redis+JDK21+Nginx+HTTPS+自动同步演示库)
redis·nginx·https
梦梦代码精14 小时前
多商户商城技术选型实测:ThinkPHP 8与Vue 3结合,B2B2C架构下的开源实践
docker·开源·代码规范