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(重载配置)"
相关推荐
2501_915106324 小时前
iOS 证书类型及作用说明 账号证书与签名配置的完整解读
android·ios·小程序·https·uni-app·iphone·webview
小张同学a.4 小时前
zabbix企业级监控平台3——服务监控与API实战
linux·运维·mysql·nginx·tomcat·zabbix
DsirNg5 小时前
一文讲清网络协议:从打开网页到理解 HTTP、HTTPS 与 TLS
http·https·dns·网络基础·入门教程·tls·web 安全
wsad05325 小时前
Docker 网络故障排查记:当 bridge 模式失效时,host 模式如何救场
运维·docker·容器
张毅2004-10-105 小时前
docker详解:安装docker,docker架构,docker镜像、容器、网络、存储,容器监控,容器日志,综合实验
linux·运维·docker·云原生·云计算
营养充电站5 小时前
C++23 新特性在 CLion 中的实战体验
macos·docker·jupyter·正则表达式
文优5 小时前
Linux 常用命令速查手册(工作版)
linux·运维·docker
Archy_Wang_113 小时前
LVS+KeepAlived+Nginx实现企业级业务高可靠部署的实战教程
运维·nginx·lvs
张文君15 小时前
docker使用代理拉取镜像
运维·docker·容器