搞开发的兄弟,是不是每次配个测试环境,都得去翻那堆得让人眼瞎的hosts文件?改完还得重启浏览器缓存,稍微手抖错个字母,服务就崩给你看。这破事儿我干了十几年,真的受够了。今天咱们不整那些虚头巴脑的理论,直接上干货,教你在centos 7部署本地域名,用DNSmasq配合Nginx,把内网解析搞得明明白白,从此告别手动改hosts的噩梦。
先说个真事儿。前阵子有个做微服务的朋友,项目里几十个微服务,每个都要配域名。他在那儿手动改hosts,改到半夜两点,头发都掉了一把。结果第二天上线,因为一个域名拼写错误,整个链路全挂。这种低级错误,其实完全可以通过本地DNS服务器来解决。你想想,如果所有服务都指向一个统一的本地DNS,改配置只改一处,那得多爽?
咱们要做的,就是在centos 7部署本地域名环境。核心思路很简单:用DNSmasq做轻量级DNS服务器,用Nginx做反向代理。DNSmasq负责把域名解析到本地IP,Nginx负责把请求转发到具体的后端服务。这俩配合,简直就是内网开发的黄金搭档。
第一步,装软件。Centos 7默认源里就有DNSmasq,直接yum install -y dnsmasq nginx就行。别嫌这命令简单,稳就完事了。装完后,启动DNSmasq,并设置开机自启。这里有个坑,很多新手直接改配置文件,结果发现解析不通。为啥?因为DNSmasq默认监听的是127.0.0.1,如果你系统防火墙没开,或者网卡配置有问题,它根本收不到请求。
第二步,配置DNSmasq。打开/etc/dnsmasq.conf,或者新建一个配置文件。重点来了,在配置里加上local=/test/,这表示所有以.test结尾的域名都由DNSmasq处理。然后加上address=/dev.test/127.0.0.1,意思就是让dev.test解析到本机。这一步是centos 7部署本地域名的关键,配置错了,后面全白搭。记得把resolv.conf里的nameserver改成127.0.0.1,这样系统才会优先用你自己的DNS。
第三步,配置Nginx。Nginx的配置就灵活多了。你可以为每个服务建一个server块,比如server_name dev.test; listen 80; location / { proxy_pass http://127.0.0.1:8080; }。这样,当你访问dev.test时,Nginx就会把请求转发给8080端口的服务。你可以搞很多个这样的server块,每个对应一个微服务。
这方案好在哪?第一,改配置不用重启服务,reload一下Nginx就行。第二,不用改hosts,任何设备只要DNS指向你的Centos 7服务器,就能解析。第三,扩展性强,加服务加配置就行,不用到处找文件改。
当然,也有缺点。比如DNSmasq缓存问题,有时候改了配置,浏览器还是旧的。这时候清一下DNS缓存,或者重启DNSmasq服务。还有,如果内网有其他DNS冲突,记得把Centos 7的DNS优先级调高。
我见过太多人还在用hosts文件,那种感觉就像是用算盘做大数据。时代变了,兄弟。用DNSmasq+Nginx这套组合拳,不仅能解决centos 7部署本地域名的问题,还能让你的开发环境更专业、更高效。别犹豫,赶紧试试,你会发现新世界的大门打开了。
最后提醒一句,配置完记得检查防火墙,80端口和DNS的53端口都得开。不然你在那儿调半天,发现是防火墙拦着,那才叫憋屈。好了,今天就聊到这,有问题评论区见,别客气。