基于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
相关推荐
oLeiShen 2020-06-25
localhost0 2020-11-12
jlccwss 2020-09-11
lwplvx 2020-09-07
YzhilongY 2020-08-31
KevinXC 2020-08-12
oLeiShen 2020-08-01
dahege 2020-08-01
windzoone 2020-07-29
travelinrain 2020-07-27
hxf0 2020-07-10
oLeiShen 2020-06-25
dahege 2020-06-22
MissFuTT 2020-06-21
ationwork 2020-06-16
kenson 2020-06-12
chwzmx 2020-06-09
tianchaoshangguo 2020-06-08