Nginx动态域名解析的过程是什么

摘要

nginx进行反向代理的时候会进行域名解析,把域名解析为具体ip后缓存在本地,如果域名对应的ip发生了改变,则会导致nginx代理失效,下面使用nginx的resolver指令来实现域名动态解析。

基于自定义DNS服务器动态解析

内网DNS服务器我使用的是dnsmasq

default.conf配置

server {     listen       80;     root         /usr/share/nginx/html/;     resolver 192.168.137.110  valid=5s;     set $proxy_url huzhihui.local;     include /etc/nginx/default.d/*.conf;     location / {       index index.html index.htm;       try_files $uri $uri/ /index.html;       client_max_body_size  100m;       add_header tenantId $arg_tenantId;       add_header appId $arg_appId;     }     location /api/ {       proxy_set_header Host $http_host;       proxy_set_header X-Real-IP $remote_addr;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       proxy_set_header X-Forwarded-Proto $scheme;       rewrite /api/(.*) /$1 break;       proxy_pass http://$proxy_url:8070;     } }

主要配置点

resolver:配置DNS服务器,和解析地址的有效期valid,

set:用来配合resolver做域名的IP地址解析

rewrite:对访问路径进行修改

proxy_pass:实际跳转到的代理服务,不要带路径参数,因为上面已经用rewrite重写了

启动访问

基于K8S的CoreDns动态域名解析

default.conf

server {     listen       80;     root         /usr/share/nginx/html/;     resolver kube-dns.kube-system.svc.cluster.local  valid=10s;     set $a_part_host a-part-http-service.huzhihui.svc.cluster.local;     include /etc/nginx/default.d/*.conf;     location / {       index index.html index.htm;       try_files $uri $uri/ /index.html;       client_max_body_size  100m;       add_header tenantId $arg_tenantId;       add_header appId $arg_appId;     }     location /api/ {       proxy_set_header Host $http_host;       proxy_set_header X-Real-IP $remote_addr;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       proxy_set_header X-Forwarded-Proto $scheme;       proxy_pass http://127.0.0.1:5031/;     } 	  location /a-part/ { 	    client_max_body_size  100m;       proxy_set_header Host $http_host;       proxy_set_header X-Real-IP $remote_addr;       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;       proxy_set_header X-Forwarded-Proto $scheme;       rewrite /a-part/(.*) /api/$1 break;       proxy_pass http://$a_part_host;     }     location ~ .*.(html)$ {          #html disabled cache          add_header Cache-Control no-store;      }     error_page 404 /404.html;         location = /40x.html {     }     error_page 500 502 503 504 /50x.html;         location = /50x.html {     } }

主要配置点

  • kube-dns.kube-system.svc.cluster.local:这个域名是K8S DNS的域名

  • a-part-http-service.huzhihui.svc.cluster.local:a-part-http-service是K8S定义的svc名称,huzhihui是我定义的namespaces,

做完上面的配置,svc重启后ip改变也不会导致反向代理失效了。

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享