03_docker 部署 nginx 配置 HTTPS 并转发请求到后端服务

03_Docker 部署 Nginx 配置 HTTPS 并转发请求到后端服务

一、在 Docker 内部署 Nginx

  1. 拉取 Nginx 镜像

    powershell 复制代码
    docker pull nginx:1.19.4 //如果能直接拉取使用这个命令
    docker pull docker.xuanyuan.me/nginx:1.19.4 //不能直接拉取需要在前面加上镜像地址
  2. 拉取成功后,创建 Nginx 容器并运行

    powershell 复制代码
    docker run -d -p 80:80 --name nginx docker.xuanyuan.me/nginx:1.19.4

    参数说明:

    • -p 80:80: 将宿主机的 80 端口映射到容器的 80 端口上。
    • -d: 以后台方式运行镜像。
    • --name: 指定容器的名称为 nginx
  3. 创建 Nginx 挂载目录

    powershell 复制代码
    //这里将nginx的目录设置在了/home/docker下
    mkdir -p /home/docker/nginx 
  4. 复制 Nginx 配置文件至宿主机

    powershell 复制代码
    # 复制名称为 nginx 容器中 /etc/nginx/nginx.conf 文件夹到宿主机的 /home/docker/nginx 路径下
    docker cp nginx:/etc/nginx/nginx.conf /home/docker/nginx
    # 复制名称为 nginx 容器中 /etc/nginx/conf.d 文件到宿主机的 /home/docker/nginx 路径下
    docker cp nginx:/etc/nginx/conf.d /home/docker/nginx
  5. 删除 Nginx 容器并重新创建

    powershell 复制代码
    docker rm -f nginx
    
    docker run -d \
    -p 80:80 \
    --name nginx \
    -v /home/docker/nginx/nginx.conf:/etc/nginx/nginx.conf \
    -v /home/docker/nginx/conf.d:/etc/nginx/conf.d \
    -v /home/docker/nginx/logs:/var/log/nginx \
    docker.xuanyuan.me/nginx:1.19.4

二、配置反向代理

在 /nginx/conf.d 路径下修改 default.conf 配置文件

复制代码
server {
    listen      80;
    listen [::]:80;
    server_name aaa.com www.aaa.com;
}

server {
    location / {
        proxy_pass http://172.17.1.66:8080;  # 将请求转发至后端服务端口,此处后端服务端口为8080,通过服务器内网ip转发,172.17.1.66为我的服务器对应的内网IP
        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;
    }
}

三、配置域名解析

  1. 购买域名

  2. 备案网站及域名(ICP 备案和公安网备案)

  3. 添加域名解析,按照如下格式添加。

参数解释:

  • www :将带有 www. 前缀的域名, 解析到对应服务器 IP , 如 www.jenkins.shuzhixinghua.com -> 116.62.199.48;

  • @ :将不带有 www. 前缀的域名,解析到对应服务器 IP , 如 jenkins.shuzhixinghua.com -> 116.62.199.48;

  • 记录值:该域名需要解析到的对应服务器IP。

四、配置 SSL 证书,实现支持 HTTPS 访问

  1. 下载申请/购买的 SSL 证书

  2. 将后缀为 .key.pem 的文件上传至 /nginx/cert 文件夹下(如果没有该文件夹自行新建)。

  3. 修改的 /nginx/conf.d 路径下修改 default.conf 配置文件

    复制代码
    server {
        listen      80;
        listen [::]:80;
        server_name aaa.com www.aaa.com;
    }
    
    server {
        listen 443 ssl; //HTTPS端口为443
        server_name aaa.com www.aaa.com;
    
        ssl_certificate /etc/nginx/cert/aaa.com.pem;
        ssl_certificate_key /etc/nginx/cert/aaa.com.key;
        ssl_protocols TLSv1.2 TLSv1.3;
        ssl_ciphers HIGH:!aNULL:!MD5;
    
        location / {
            proxy_pass http://172.17.1.66:8080;  # 将请求转发至后端服务端口,此处后端服务端口为8080,通过服务器内网ip转发,172.17.1.66为我的服务器对应的内网IP
            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;
        }
    }
相关推荐
天下·第二38 分钟前
【Nginx】负载均衡配置详解
运维·nginx·负载均衡
cherishSpring40 分钟前
在windows使用docker打包springboot项目镜像并上传到阿里云
spring boot·docker·容器
LKAI.1 小时前
k8s存储动态供给StorageClass
docker·微服务·云原生·容器·kubernetes
马武寨山的猴子2 小时前
【MinerU】:一款将PDF转化为机器可读格式的工具——RAG加强(Docker版本)
人工智能·docker·容器·pdf·rag
Hello.Reader2 小时前
洞悉 NGINX ngx_http_access_module基于 IP 的访问控制实战指南
tcp/ip·nginx·http
高峰君主3 小时前
「Docker已死?」:基于Wasm容器的新型交付体系如何颠覆十二因素应用宣言
docker·容器·wasm
晓柏6 小时前
Docker 部署 ELK 日志收集系统
docker
liang89997 小时前
Docker(二):docker常用命令
spring cloud·docker·容器
PWRJOY8 小时前
在 Ubuntu 24.04 系统上安装和管理 Nginx
linux·nginx·ubuntu
启明真纳8 小时前
统信操作系统使用默认yum源安装 Docker 的踩坑
运维·docker·容器