docker-compose创建nginx并部署ssl证书,阿里云ssl证书

本文介绍了如何在Docker容器化的Nginx服务器上配置和使用阿里云免费SSL证书,强调了文件映射和端口映射的重要性,并提供了`docker-compose.yml`配置示例以及`ssl.conf`的Nginx服务器块配置。通过这个教程,读者可以学习到如何正确设置Nginx的SSL证书,确保HTTPS服务的正常运行。

阿里云有免费证书,地址:数字证书管理服务管理控制台 - 概览 (aliyun.com)

免费证书好像要达到什么条件才有,一般域名多肯定有的。

 官方基于nginx的教程:在Nginx或Tengine服务器上安装证书 (aliyun.com)

而我们,是要在docker基础上创建nginx并部署ssl,所以有两个东西不能搞错,文件映射和端口映射。笔者搞的时候就漏了443端口忘记映射所以不能成功卡了挺久。

废话不多说,直接上代码。

docker-compose.yml

version: '3.3'
services:
      nginx:
        image: nginx
        restart: always
        hostname: nginx
        container_name: nginx
        privileged: true
        ports:
          - 80:80
          - 443:443
        volumes:
          - /usr/local/docker-compose/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
          - /usr/local/docker-compose/nginx/conf.d/:/etc/nginx/conf.d/
          - /usr/local/docker-compose/nginx/www/:/usr/share/nginx/html/
          - /usr/local/docker-compose/nginx/logs/:/var/log/nginx/
          - /usr/local/docker-compose/nginx/ssl/:/etc/nginx/ssl/
          - /usr/local/kuaishou/:/usr/local/kuaishou/

ssl.conf,替换其中域名,路径不能错,一定要是容器nginx里的路径

server {
    listen 443 ssl;

    server_name baidu.com;
    root html;
    index index.html index.htm;
    ssl_certificate /etc/nginx/ssl/baidu.com.pem;  
    ssl_certificate_key /etc/nginx/ssl/baidu.com.key; 
    ssl_session_timeout 5m;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    location / {
        root html;
        index index.html index.htm;
    }
}

小白记得把nginx的配置nginx.conf改一下

user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    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;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

### 如何在 Docker Compose 中为 Nginx 配置 SSL 证书 为了在 Docker Compose 的环境中为 Nginx 配置 SSL 证书,可以按照以下方法操作: #### 准备工作 首先需要准备 SSL 证书文件 `fullchain.pem` 和私钥文件 `privkey.pem`。这些文件通常由受信任的 CA 提供或者通过工具(如 Certbot)自动生成。 #### 修改 `docker-compose.yml` 在 `docker-compose.yml` 文件中定义 Nginx 容器挂载本地目录中的 SSL 证书到容器内部路径 `/etc/nginx/certs/` 下[^1]。以下是示例配置: ```yaml version: '3.8' services: nginx: image: nginx:latest container_name: nginx_ssl_container ports: - "80:80" - "443:443" volumes: - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/certs:/etc/nginx/certs # 将本地证书目录映射至容器内的 /etc/nginx/certs/ networks: - app_network networks: app_network: driver: bridge ``` #### 创建 Nginx 配置文件 创建一个名为 `default.conf` 的 Nginx 配置文件,将其放置于项目根目录下的 `./nginx/conf.d/` 路径下。该文件应包含 SSL 配置相关内容,例如: ```nginx server { listen 80; server_name yourdomain.com; # Redirect HTTP to HTTPS return 301 https://$host$request_uri; } server { listen 443 ssl; server_name yourdomain.com; ssl_certificate /etc/nginx/certs/fullchain.pem; # 映射后的证书路径 ssl_certificate_key /etc/nginx/certs/privkey.pem; # 映射后的密钥路径 location / { proxy_pass http://web:8000; # 假设后端服务运行在 web 容器上 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } } ``` 上述配置实现了两个功能:一是将未加密的 HTTP 请求重定向到 HTTPS;二是设置反向代理指向后端应用服务器(假设其名称为 `web` 监听端口 `8000`)。此部分逻辑基于站内引用的内容进行了扩展[^2]。 #### 启动服务 完成以上修改之后,可以通过执行以下命令来启动带有 SSL 支持的服务: ```bash docker compose up -d ``` 这一步骤会依据更新过的 `docker-compose.yml` 文件重新构建和部署所有关联的服务实例[^3]。 --- #### 注意事项 如果遇到权限问题或无法加载证书的情况,请确认宿主机上的证书文件具有正确的读取权限以及路径无误。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值