首頁 > 軟體

Nginx 動態域名解析過程詳解

2023-03-02 18:01:54

摘要

Nginx進行反向代理的時候會進行域名解析,把域名解析為具體IP後快取在本地,如果域名對應的IP發生了改變,則會導致Nginx代理失效,下面使用Nginxresolver指令來實現域名動態解析。

基於自定義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.locala-part-http-serviceK8S定義的svc名稱,huzhihui是我定義的namespaces

做完上面的設定,svc重啟後ip改變也不會導致反向代理失效了。

以上就是Nginx 動態域名解析過程詳解的詳細內容,更多關於Nginx 動態域名的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com