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;
        }
    }
相关推荐
kabu_Charlie37 分钟前
使用Docker运行python程序
运维·docker·容器
包饭厅咸鱼1 小时前
小龙虾openclaw----Windows+Wsl+Docker 安装openclaw 并接入飞书
windows·docker·openclaw·小龙虾
骥龙1 小时前
第五篇:运行时安全——Docker沙箱与命令审批机制
安全·docker·容器
tonyhi62 小时前
Ubuntu DeepSeek R1本地化部署 Ollama+Docker+OpenWebUI
java·ubuntu·docker
困惑阿三2 小时前
全栈服务器运维终极备忘录
运维·服务器·nginx·pm2
小庄梦蝶2 小时前
Mixed Content: The page at ‘https://域名/‘ was loaded over HTTPS
网络协议·http·https
南山十一少3 小时前
docker的安装及使用
运维·docker·容器
无籽西瓜a3 小时前
Docker 环境下 Redis Lua 脚本部署与执行
redis·docker·lua
万里不留行3 小时前
解决ubuntu docker拉取环境失败问题
linux·ubuntu·docker
PascalMing4 小时前
告别 Nginx!ASP.NET Core 实现多域名 Vue 静态服务与代理转发
vue.js·nginx·asp.net