Nginx 动态域名解析
- - 掘金 后端摘要: Nginx进行反向代理的时候会进行域名解析,把域名解析为具体 IP后缓存在本地,如果域名对应的 IP发生了改变,则会导致 Nginx代理失效,下面使用 Nginx的 resolver指令来实现域名动态解析. 基于自定义DNS服务器动态解析. 内网 DNS服务器我使用的是 dnsmasq.
摘要: Nginx
进行反向代理的时候会进行域名解析,把域名解析为具体 IP
后缓存在本地,如果域名对应的 IP
发生了改变,则会导致 Nginx
代理失效,下面使用 Nginx
的 resolver
指令来实现域名动态解析。
内网
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
改变也不会导致反向代理失效了。