摘要
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