关于 proxy_pass 的动态域名解析问题

本贴最后更新于 2754 天前,其中的信息可能已经时移世异

关于proxy_pass 的域名解析问题


nginx在反向代理动态的域名的时候, 差不多一天出现一次nginx访问挂掉,但真实服务正常运行,重启后又正常了, 查nginx的log,后发现域名解析的IP改变了后,nginx会缓存之前的IP,我了个去,最先找到了这人nginx的衍生品http://www.senginx.org/cn/index.php/动态upstream域名解析  (还没测试),嗯,好歹给了个结果,恼了蛮久还以为是nginx对web服务的连接未释放引起的呢! 这下满足了。。。。。


下文 文章转自: http://www.techindeep.com/nginx_proxy_pass.html


最近遇到了一个奇怪的问题,我们的一个需要nginx转发的A接口调用另一个IP服务接口时会报502,但是单独调用IP服务时就OK。并且reload A接口的nginx后,居然就正常了。
看了下A接口的nginx配置
location ^~/api/searchip.htm {
proxy_cache STATIC;
proxy_cache_valid 200 304 301 302 5m;
proxy_cache_key $host$uri$is_args$args;
proxy_pass http://example.ap-southeast-1.elb.amazonaws.com;
}
看起来很正常。
检查error日志发现了一个问题,日志中proxy_pass到后端的IP并不是example.ap-southeast-1.elb.amazonaws.com的当前IP。
在经过分析,找到了原因,example.ap-southeast-1.elb.amazonaws.com是亚马逊的ELB,后端挂着两台服务器作为后端。由于ELB的IP池是变化的,我们的ELB随着流量扩张收缩后,ELB的IP发生了变化。但是nginx配置proxy_pass的域名并没有被重新解析。仍然转到老的解析IP去了,因此出现了502。
有两个解决方法:
1、 将proxy_pass的域名改成upstream到具体的IP,因为我们的后端服务器是不变化的。
2、 可以将proxy_pass 后面的域名转为动态的,nginx 默认5分钟会重新解析动态的域名。
类似这样:
location ^~/api/searchip.htm {
proxy_cache STATIC;
proxy_cache_valid 200 304 301 302 5m;
proxy_cache_key $host$uri$is_args$args;
# proxy_pass http://example.ap-southeast-1.elb.amazonaws.com;
resolver 8.8.8.8;
set $IPS test.example.com;
proxy_pass http://$IPS;
}
参考文章:
http://forum.nginx.org/read.php?2,215830,215832#msg-215832

http://serverfault.com/questions/240476/how-to-force-nginx-to-resolve-dns-of-a-dynamic-hostname-everytime-when-doing-p

  • NGINX

    NGINX 是一个高性能的 HTTP 和反向代理服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 NGINX 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本 0.1.0 发布于 2004 年 10 月 4 日。

    300 引用 • 544 回帖 • 228 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • someone

    最新发现,上文的 5 分钟,并不是精确的 5 分钟,而是 DNS 服务器刷新缓存的时间,也就是说 :这"ngnix 配置 成了动态域名,就不缓存 IP 了" ,然后你再把 “resolver 223.5.5.5 223.6.6.6 1.2.4.8 114.114.114.114 valid=3600s;” 设置成阿里的 DNS 服务器,我 X 快的一 B 了

zaq369cde
那B小心-------&gtฌููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููููู็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็็ 苏州

推荐标签 标签

  • Pipe

    Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    131 引用 • 1112 回帖 • 199 关注
  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1405 引用 • 10004 回帖 • 479 关注
  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 474 关注
  • OkHttp

    OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。

    16 引用 • 6 回帖 • 29 关注
  • IBM

    IBM(国际商业机器公司)或万国商业机器公司,简称 IBM(International Business Machines Corporation),总公司在纽约州阿蒙克市。1911 年托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司,拥有全球雇员 30 多万人,业务遍及 160 多个国家和地区。

    16 引用 • 53 回帖 • 64 关注
  • 微软

    微软是一家美国跨国科技公司,也是世界 PC 软件开发的先导,由比尔·盖茨与保罗·艾伦创办于 1975 年,公司总部设立在华盛顿州的雷德蒙德(Redmond,邻近西雅图)。以研发、制造、授权和提供广泛的电脑软件服务业务为主。

    8 引用 • 44 回帖 • 1 关注
  • ActiveMQ

    ActiveMQ 是 Apache 旗下的一款开源消息总线系统,它完整实现了 JMS 规范,是一个企业级的消息中间件。

    19 引用 • 13 回帖 • 590 关注
  • 支付宝

    支付宝是全球领先的独立第三方支付平台,致力于为广大用户提供安全快速的电子支付/网上支付/安全支付/手机支付体验,及转账收款/水电煤缴费/信用卡还款/AA 收款等生活服务应用。

    29 引用 • 347 回帖 • 2 关注
  • Vue.js

    Vue.js(读音 /vju ː/,类似于 view)是一个构建数据驱动的 Web 界面库。Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。

    260 引用 • 661 回帖 • 161 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3105 引用 • 8197 回帖 • 245 关注
  • OpenShift

    红帽提供的 PaaS 云,支持多种编程语言,为开发人员提供了更为灵活的框架、存储选择。

    14 引用 • 20 回帖 • 575 关注
  • Hibernate

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。

    39 引用 • 103 回帖 • 662 关注
  • 互联网

    互联网(Internet),又称网际网络,或音译因特网、英特网。互联网始于 1969 年美国的阿帕网,是网络与网络之间所串连成的庞大网络,这些网络以一组通用的协议相连,形成逻辑上的单一巨大国际网络。

    96 引用 • 330 回帖 • 1 关注
  • 微服务

    微服务架构是一种架构模式,它提倡将单一应用划分成一组小的服务。服务之间互相协调,互相配合,为用户提供最终价值。每个服务运行在独立的进程中。服务于服务之间才用轻量级的通信机制互相沟通。每个服务都围绕着具体业务构建,能够被独立的部署。

    94 引用 • 155 回帖
  • Webswing

    Webswing 是一个能将任何 Swing 应用通过纯 HTML5 运行在浏览器中的 Web 服务器,详细介绍请看 将 Java Swing 应用变成 Web 应用

    1 引用 • 15 回帖 • 591 关注
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    2 引用 • 20 回帖 • 1 关注
  • frp

    frp 是一个可用于内网穿透的高性能的反向代理应用,支持 TCP、UDP、 HTTP 和 HTTPS 协议。

    14 引用 • 5 回帖
  • 创业

    你比 99% 的人都优秀么?

    81 引用 • 1395 回帖 • 1 关注
  • 数据库

    据说 99% 的性能瓶颈都在数据库。

    330 引用 • 604 回帖
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 307 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 2 关注
  • 自由行
    1 关注
  • Typecho

    Typecho 是一款博客程序,它在 GPLv2 许可证下发行,基于 PHP 构建,可以运行在各种平台上,支持多种数据库(MySQL、PostgreSQL、SQLite)。

    11 引用 • 52 回帖 • 493 关注
  • Log4j

    Log4j 是 Apache 开源的一款使用广泛的 Java 日志组件。

    20 引用 • 18 回帖
  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    891 引用 • 919 回帖
  • 小说

    小说是以刻画人物形象为中心,通过完整的故事情节和环境描写来反映社会生活的文学体裁。

    28 引用 • 108 回帖 • 2 关注
  • SSL

    SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS 与 SSL 在传输层对网络连接进行加密。

    66 引用 • 188 回帖 • 507 关注