当前位置: 首页 > article >正文

docker配置固定ip解决nginx代理容器名称dns缓存不更新问题

docker配置固定ip解决nginx代理容器名称dns缓存不更新问题

场景

在nginx配置中,proxy_pass代理项使用容器名称替代ip,容器重启后代理的url网络不通。

nginx配置示例

location /api/ {
	proxy_set_header Host $http_host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header REMOTE-HOST $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    # 这里的iot-backend为docker容器名称
	proxy_pass http://iot-backend:8089;
}

docker dns

在docker网络中,提供有默认dns服务127.0.0.11用于容器名称和容器ip的解析转换,同时自动生成文件到容器内/etc/resolv.conf。在不指定容器ip时,每次容器重启后,容器ip会重新分配而发生变更。

nginx dns缓存

在nginx中,在第一次dns解析成功后,结果会被缓存,并不会自动更新。因此容器重启后,容易导致proxy_pass配置的基于容器名称的代理网络不通。此时需要手动重启nginx或重新加载nginx配置,触发后续网络请求进入更新dns。

使用固定ip解决重启后容器ip变更

创建容器网络,为容器配置网络,并设置固定ip。容器重启后ip不变,间接保证nginx代理url网络联通。

docker compose配置示例

# 创建容器网络,桥接模式,使用ipam固定ip
networks:
  iot-network:
    name: iot-network
    ipam:
      driver: default
      config:
        - subnet: '177.7.0.0/16'

# 为容器配置网络和固定ip
iot-backend:
    networks:
      iot-network:
        ipv4_address: 177.7.0.10

创建后可以使用docker network ls查看容器网络。


http://www.kler.cn/a/576368.html

相关文章:

  • 【基础3】快速排序
  • TDengine SQL手册—删除数据
  • 搭建BOA服务器
  • 【MySQL_03】数据库基本--核心概念
  • Springboot 循环依赖
  • 深入解析京东商品详情 API 接口 item_get
  • Linux(Centos 7.6)命令详解:vim
  • 运维Zabbix面试题及参考答案
  • HCIA-路由重分布
  • Python接口自动化之断言封装!
  • LLM论文笔记 19: On Limitations of the Transformer Architecture
  • 鸿蒙HarmonyOS评论功能小demo
  • 考研题库与考研真题分别应该如何使用?
  • 搭建一套东郊到家上门按摩app需要多少钱?
  • 恶劣天候三维目标检测论文列表整理
  • eclipse查看源码
  • 自学Java-JavaSE基础加强(Java网络编程)
  • 大白话CSS 中的box-sizing属性,它有哪些值以及各自的作用
  • 【笔记】记一次easyExcel中注解ExcelProperty映射字段赋值无效问题
  • G1,最大的特点是什么,标记位图,卡表卡页,SATB又分别是什么?