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;
        }
    }
相关推荐
向上的车轮1 小时前
Nginx基础知识
运维·nginx
JANYI20182 小时前
一文读懂----Docker 常用命令
java·docker·eureka
liujiangxu2 小时前
docker默认存储迁移
docker
2501_916007473 小时前
没有 Mac,我如何用 Appuploader 完成 iOS App 上架
websocket·网络协议·tcp/ip·http·网络安全·https·udp
石马农汪3 小时前
在ubuntu系统中将vue3的打包文件dist 部署nginx 并且配置ssl证书 以https方式访问
nginx·ubuntu·ssl
2501_916013743 小时前
App 发布后才想起安全?iOS 后置混淆的实战方法与工具路线(含 Ipa Guard 应用体验)
websocket·网络协议·tcp/ip·http·网络安全·https·udp
weixin_449568704 小时前
Nginx端口telnet不通排查指南
运维·服务器·nginx
ZHOU_WUYI7 小时前
使用Docker部署React应用与Nginx
nginx·react.js·docker
L汐14 小时前
07 负载均衡
运维·nginx·负载均衡
牛奔14 小时前
Docker配置远程连接
运维·docker·云原生·容器·eureka