Nginx
进行反向代理的时候会进行域名解析,把域名解析为具体IP
后缓存在本地,如果域名对应的IP
发生了改变,则会导致Nginx
代理失效,下面使用Nginx
的resolver
指令来实现域名动态解析。
内网DNS
服务器我使用的是dnsmasq
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
重写了
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 above is the detailed content of What is the process of Nginx dynamic domain name resolution?. For more information, please follow other related articles on the PHP Chinese website!