基于nginx proxy dns server
原理实际行就是stream模式,因为nginx 支持基于stream 模式的lb同时支持(tcp.udp)以下是一个简单的配置
环境准备
- docker-compose 文件
version: "3"
services:
lb:
image: openresty/openresty:alpine
volumes:
- "./nginx-lb.conf:/usr/local/openresty/nginx/conf/nginx.conf"
- "./dns.log:/var/log/nginx/dns.log"
ports:
- "53:53/udp"
- "53:53/tcp"
- nginx 配置
worker_processes 1;
user root;
events {
worker_connections 1024;
}
stream {
upstream dns_servers {
server 114.114.114.114:53;
server 8.8.8.8:53;
server 8.8.8.4:53;
}
server {
listen 53 udp;
listen 53; #tcp
proxy_pass dns_servers;
error_log /var/log/nginx/dns.log info;
}
}
- 启动
docker-compose up -d
测试
- dig 测试
dig @127.0.0.1 baidu.com
效果
说明
有点不太好的,默认的不支持health check,当然我们可以基于openresty 的stream 模块进行扩展,这样就可以更好的利用dns 做一些比较
强大的功能(比如coredns,consul)
参考资料
https://www.nginx.com/blog/load-balancing-dns-traffic-nginx-plus/
https://github.com/StalkR/dns-reverse-proxy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-06-25 flipt 一个基于golang 的特性工具开发类库
2018-06-25 graphcool-framework 一个基于graphql的后端开发框架
2018-06-25 graphql-yoga 项目简单使用&&集成docker