Nginx动态域名解析的过程是什么

寻技术 Nginx 2023年08月04日 181

本文小编为大家详细介绍“Nginx动态域名解析的过程是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“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
改变也不会导致反向代理失效了。
关闭

用微信“扫一扫”