提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。


提示:以下是本篇文章正文内容,下面案例可供参考

一、

1.1 关闭防火墙和 SELinux + 安装 Docker 和 Docker Compose

1.2 创建项目目录

为了让项目结构更清晰(便于后续维护配置、证书、静态资源),先创建统一的工程目录:

 -p 确保父目录不存在时自动创建,ssl 目录用于存放 HTTPS 证书
mkdir -p /opt/compose_https/{nginx,ssl/private,ssl/certs,wwwroot}

1.3创建自签名证书(HTTPS 核心依赖)

# 1. 生成 RSA 私钥(2048位,无加密,避免每次启动 Nginx 输入密码)
# key 文件是服务器端私钥,需妥善保管,不可泄露
openssl genpkey -algorithm RSA -out /opt/compose_https/ssl/private/nginx-selfsigned.key -pkeyopt rsa_keygen_bits:2048

# 2. 生成证书请求文件(CSR)
# 执行后会提示输入信息(如国家、组织、域名等),其中「Common Name」需与访问域名一致(测试可填服务器 IP)
openssl req -new -key /opt/compose_https/ssl/private/nginx-selfsigned.key -out /opt/compose_https/ssl/certs/nginx-selfsigned.csr
# 在执行过程中需填写以下信息(示例):
- Country Name(国家代码):CN
- State or Province Name(省/州):Beijing
- Locality Name(城市):Beijing
- Organization Name(组织名称):MyCompany Ltd
- Organizational Unit Name: (部门名):IT Department(可留空)
- Common Name(域名):example.com
- Email Address(邮箱):admin@example.com

# 3. 生成自签名证书(CRT),有效期设为 365 天
openssl x509 -req -days 365 -in /opt/compose_https/ssl/certs/nginx-selfsigned.csr -signkey /opt/compose_https/ssl/private/nginx-selfsigned.key -out /opt/compose_https/ssl/certs/nginx-selfsigned.crt

# 4. 验证证书文件是否生成成功
ls -l /opt/compose_https/ssl/private
ls -l /opt/compose_https/ssl/certs
# 正常会输出 nginx-selfsigned.key(private目录)和 nginx-selfsigned.csr、nginx-selfsigned.crt(certs目录)

1.4 项目架构图

本次 Docker 部署 Nginx + HTTPS 的项目结构如下(清晰区分配置、证书、静态资源目录,便于后期维护):

/opt/compose_https/          # 工程根目录
├── docker-compose.yml       # Docker Compose 核心编排文件(定义服务、端口、挂载等)
├── nginx/                   # Nginx 服务相关目录
│   └── nginx.conf           # Nginx 核心配置文件(HTTPS 配置、反向代理、静态资源映射等)
├── ssl/                     # HTTPS 证书目录
│   ├── private/             # 存放私钥(安全敏感文件)
│   │   └── nginx-selfsigned.key  # 服务器私钥(不可泄露)
│   └── certs/               # 存放证书文件
│       ├── nginx-selfsigned.csr  # 证书请求文件(生成证书时用,可删除)
│       └── nginx-selfsigned.crt  # 自签名证书(或权威机构证书)
└── wwwroot/                 # Nginx 静态资源目录(挂载到容器内,修改本地文件即可生效)
    └── index.html           # 测试用静态页面(验证 HTTPS 访问效果)

二、核心配置文件编写

在 /opt/compose_https/ 目录下创建 docker-compose.yml 文件,用于定义 Nginx 容器的启动参数(端口、挂载、重启策略等)

version: '3'  # Compose 版本,需与 Docker 版本兼容(CentOS 7.9 推荐 3.8 及以下)

services:
  nginx-https:  # 服务名(自定义,便于后续操作)
    image: nginx:latest  # 使用官方最新版 Nginx 镜像
    ports:
      - "80:80"    # 映射 HTTP 端口(80 是 HTTP 默认端口,用于重定向到 HTTPS)
      - "443:443"  # 映射 HTTPS 端口(443 是 HTTPS 默认端口,核心访问端口)
    volumes:
      # 挂载 Nginx 配置文件(本地配置修改后,容器内实时生效,无需重启镜像)
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      # 挂载静态资源目录(本地 wwwroot 目录映射到容器内 Nginx 默认静态目录)
      - ./wwwroot:/usr/share/nginx/html:rw
      # 挂载 HTTPS 证书(ro 表示只读,防止容器内误修改证书)
      - ./ssl/certs:/etc/nginx/ssl/certs:ro
      - ./ssl/private:/etc/nginx/ssl/private:ro
    restart: always  # 容器重启策略(always 表示容器退出后自动重启,确保服务稳定)
    networks:
      - nginx-net  # 自定义网络(隔离容器网络,增强安全性)

# 定义自定义网络(桥接模式,默认即可)
networks:
  nginx-net:
    driver: bridge

2.2 编写 Nginx 核心配置(nginx.conf)

在 /opt/compose_https/nginx/ 目录下创建 nginx.conf 文件,核心配置 HTTP 重定向到 HTTPS 和 HTTPS 服务端参数:

# Nginx 全局配置( worker 进程数建议设为服务器 CPU 核心数,用 auto 自动适配)
worker_processes auto;
error_log /var/log/nginx/error.log warn;  # 错误日志路径
pid /var/run/nginx.pid;                  # 进程 PID 文件

events {
    worker_connections 1024;  # 每个 worker 进程最大连接数(根据服务器性能调整)
}

# HTTP 服务配置(仅用于将 HTTP 请求重定向到 HTTPS)
http {
    include       /etc/nginx/mime.types;  # 引入 MIME 类型映射(支持不同文件格式)
    default_type  application/octet-stream;

    # 日志格式定义(记录访问日志,便于排查问题)
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;  # 访问日志路径

    sendfile        on;  # 开启高效文件传输模式(减少 IO 开销)
    keepalive_timeout  65;  # 客户端连接超时时间(秒)

    # HTTP 服务端(80 端口):所有 HTTP 请求重定向到 HTTPS
    server {
        listen       80;
        server_name  localhost;  # 测试用 localhost,生产环境替换为实际域名(如 example.com)

        # 核心重定向规则:301 永久重定向到 HTTPS 地址
        return 301 https://$host$request_uri;
    }

    # HTTPS 服务端(443 端口):核心服务配置
    server {
        listen       443 ssl;  # 监听 443 端口并启用 SSL(HTTPS)
        server_name  localhost;  # 同上,生产环境替换为实际域名

        # 配置 HTTPS 证书路径(容器内路径,对应本地挂载的证书)
        ssl_certificate     /etc/nginx/ssl/certs/nginx-selfsigned.crt;
        ssl_certificate_key /etc/nginx/ssl/private/nginx-selfsigned.key;

        # 配置 SSL 协议和加密套件(禁用不安全的协议,如 SSLv2、SSLv3)
        ssl_protocols TLSv1.2 TLSv1.3;  # 仅支持 TLS 1.2/1.3(安全性更高)
        ssl_ciphers "ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384";
        ssl_prefer_server_ciphers on;  # 优先使用服务端定义的加密套件

        # 静态资源映射(对应本地挂载的 wwwroot 目录)
        location / {
            root   /usr/share/nginx/html;  # 静态资源根目录(容器内路径)
            index  index.html index.htm;   # 默认首页文件
            try_files $uri $uri/ /index.html;  # 解决单页应用路由问题(可选)
        }

        # 错误页面配置(可选,增强用户体验)
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   /usr/share/nginx/html;
        }
    }
}

2.3 准备测试静态页面(验证访问效果)

在 /opt/compose_https/wwwroot/ 目录下创建 index.html 文件,用于测试 HTTPS 访问是否生效:

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Docker Nginx HTTPS 测试</title>
    <style>
        body {
            text-align: center;
            margin-top: 100px;
            font-family: "Microsoft YaHei";
        }
        h1 {
            color: #2c3e50;
        }
        .https-tag {
            color: #27ae60;
            font-size: 24px;
            font-weight: bold;
        }
    </style>
</head>
<body>
    <h1>恭喜!Docker Nginx HTTPS 部署成功</h1>
    <div class="https-tag">✓ 已启用 HTTPS 加密访问</div>
    <p>服务器环境:CentOS 7.9 + Docker + Nginx</p>
</body>
</html>

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

更多推荐