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 分享