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
改变也不会导致反向代理失效了。
以上がNginx の動的ドメイン名解決のプロセスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。