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(重载配置)"
相关推荐
bosins4 小时前
WSL2 启动即崩溃?调整超时参数解决 Docker 阻塞问题
linux·docker·wsl
一直在努力学习的菜鸟6 小时前
Docker 完整知识体系图
docker
打工仔折腾 AI7 小时前
FastAPI 从本机到生产服务器:Nginx+Gunicorn+Uvicorn 完整部署实录
人工智能·后端·python·nginx·fastapi·gunicorn
java_logo9 小时前
Docker 部署 Gotenberg 完整教程:Compose 搭建文档转 PDF API
docker·pdf·chromium·libreoffice·文档转换·轩辕镜像·gotenberg
闲云野鹤在人间9 小时前
docker 入门 | 第7章 容器监控 和 第8章 容器日志 详解
运维·docker·容器·架构·云计算
Experience-摆渡10 小时前
开源RAG知识库WeKnora深度调研:让知识自己长成体系
爬虫·docker·开源·rag
闲云野鹤在人间10 小时前
docker 入门 | 第5章 网络详解
网络·docker·架构·华为云·php
闲云自留地11 小时前
告别敲命令!DockerUI 与 Portainer 可视化容器管理实战
docker·容器
wdfk_prog11 小时前
ROS教程10:从 gtest 到 rostest——Unit Test、Node 集成测试、rosbag 与 rqt 验证闭环
运维·缓存·docker·容器·ros
Linux运维技术栈12 小时前
如何避免绕过CDN的攻击?基于 CDN 回源请求头鉴权的防御实操与安全性剖析
nginx·安全·cdn