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(重载配置)"
相关推荐
Patrick_Wilson3 天前
从「改个端口」到 502:Next.js on k8s 的容器端口、Service 映射与 env 覆盖
docker·kubernetes·next.js
Suroy3 天前
DockerView-Go:用 Go 写一个终端 Docker 监控工具,顺便做了个 Web 仪表盘
docker
云恒要逆袭3 天前
运行你的第一个Docker容器
后端·docker·容器
宋均浩4 天前
# Docker 镜像瘦身实战:从 1.2G 到 80MB 的五个优化步骤
ci/cd·docker
Avan_菜菜5 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
程序员老赵5 天前
10 分钟部署 OpenCode:Docker 一键安装,浏览器打开就能用 AI 写代码(附完整命令与排错)
docker·容器·ai编程
WangMingHua1115 天前
LM Studio Docker 部署——本地大模型一键启动
docker
曲幽6 天前
别再用网页翻译看源码了!你的私人翻译神器LibreTranslate,部署避坑指南来了
python·docker·web·pot·translate·libretranslate·arogstranslate
武子康8 天前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
ping某9 天前
为什么 Nginx 明明监听了 80,转发后端时却用了 4xxxx 端口?
后端·nginx