Nginx 动态域名解析过程详解

目录
  • 摘要
  • 基于自定义DNS服务器动态解析
    • default.conf配置
    • 主要配置点
    • 启动访问
  • 基于K8S的CoreDns动态域名解析
    • default.conf
    • 主要配置点

摘要

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 动态域名的资料请关注我们其它相关文章!

(0)

相关推荐

  • Nginx禁止ip访问或非法域名访问

    在生产环境中,为了网站的安全访问,需要Nginx禁止一些非法访问,如恶意域名解析,直接使用IP访问网站.下面记录一些常用的配置示例: 1)禁止IP访问 如果没有匹配上server name就会找default默认,返回501错误. server { listen 80 default_server; server_name _; return 501; } 2)通过301跳转到主页 server { listen 80 default_server; server_name _; rewrite

  • Nginx+Windows搭建域名访问环境的操作方法

    目录 一.修改Windowshosts文件 二.Nginx配置文件 三.分析Nginx配置文件 四.gulimall.conf 4.1查看Windowsip 4.2配置代理 五.图示 六.反向代理:nginx代理网关由网关进行转发 6.1修改nginx.conf 6.2修改gulimall.conf 七.访问跳转分析 7.1后面的跳转分析 一.修改 Windows hosts 文件 位置:C:\Windows\System32\drivers\etc 在后面追加以下内容: # guli mall

  • Nginx如何限制IP访问只允许特定域名访问

    目录 1.找到 nginx 的配置文件 2.添加新的 server 3.修改 server 4.访问测试 总结 为了我们的服务器安全,我们需要禁止直接使用 IP 访问我们的服务器,我们可以借助 Nginx 完成 1.找到 nginx 的配置文件 cd /usr/local/nginx/conf/ 找到 nginx.conf 文件 编辑它 2.添加新的 server # 禁止ip访问 server { listen 80 default_server; listen 443 ssl default

  • 详细聊聊K8s容器内nginx带变量的域名解析

    如果 nginx 的 proxy_pass 指令带有变量名的话: server { server_name ~^(\w+)\.example\.com$; location / { proxy_pass http://svc-$1; } } 不配置 resolver 是不能使用的(虽然可以成功加载配置): $ curl --resolve 'a.example.com:80:127.0.0.1' a.example.com <html> <head><title>502

  • Nginx如何配置多个服务域名解析共用80端口详解

    目录 前言 配置nginx多服务共用80端口 以下以两个服务使用域名访问,共用80端口为例 方案一:多个不同端口服务共用80端口 方案二:多个服务共用80端口 总结 前言 由于公司一台服务器同时有多个服务,这些服务通过域名解析都希望监听80/443端口直接通过域名访问,比如有demo.test.com和product.test.com.这时候我们可以使用nginx的代理转发功能帮我们实现共用80/443端口的需求. 备注:由于HTTP协议默认监听80端口,HTTPS协议默认监听443端口,所以使

  • Nginx 动态域名解析过程详解

    目录 摘要 基于自定义DNS服务器动态解析 default.conf配置 主要配置点 启动访问 基于K8S的CoreDns动态域名解析 default.conf 主要配置点 摘要 Nginx进行反向代理的时候会进行域名解析,把域名解析为具体IP后缓存在本地,如果域名对应的IP发生了改变,则会导致Nginx代理失效,下面使用Nginx的resolver指令来实现域名动态解析. 基于自定义DNS服务器动态解析 内网DNS服务器我使用的是dnsmasq default.conf配置 server {

  • Django nginx配置实现过程详解

    django 在引入第三方模块的时候保证服务的高可用,要设立一个备份接口,当主接口宕机时可以设置一个超市参数来使用备份的接口. nginx 反向代理器,网站服务器,负载均衡 基本命令 sudo nginx启动 sudo nginx -s stop sudo nginx -s quit sudo nginx -s reopen 关键配置模块 events配置域:网络连接相关配置(I/O模块) server配置域:相关服务节点配置 location http配置域 upstream配置域:反向代理配

  • 基于postman获取动态数据过程详解

    1.在 Tests 中处理 返回报文为 json 格式的 示例:因为充值记录接口中需要用到登录接口返回报文中的信息如下 以获取 token(JWT)和 uid 为例 在登录接口的tests中写入代码(因为登录接口报文信息中有返回 JWT 和 uid) 输入完上图中代码后,点击send请求接口,去全局变量中查看,是否成功获取JWT和uid的值并且设置了全局变量 在充值记录接口中需要用到JWT和uid的地方设置变量{{JWT}}和{{uid}} 请求完成后清除变量 通过批量执行用例的方法执行,且切换

  • Spring JDK动态代理实现过程详解

    这篇文章主要介绍了Spring JDK动态代理实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1. 创建项目 在 MyEclipse 中创建一个名称为 springDemo03 的 Web 项目,将 Spring 支持和依赖的 JAR 包复制到 Web 项目的 WEB-INF/lib 目录中,并发布到类路径下. 2. 创建接口 CustomerDao 在项目的 src 目录下创建一个名为 com.mengma.dao 的包,在该包下

  • 基于nginx设置浏览器协商缓存过程详解

    这篇文章主要介绍了基于nginx设置浏览器协商缓存过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 强缓存与协商缓存的区别 强缓存:浏览器不与服务端协商直接取浏览器缓存 协商缓存:浏览器会先向服务器确认资源的有效性后才决定是从缓存中取资源还是重新获取资源 协商缓存运作原理 现在有一个这样的业务情景:后端的静态资源会不定时地发生更新,而因为浏览器默认使用强缓存,会默认从浏览器缓存中取到过时的资源. 现在我们希望浏览器每次获取资源的时候都向后

  • nginx搭建jsdelivr镜像站过程详解

    目录 创建 jsdelivr 镜像站 使用 jsdelivr 镜像站 ​最近 jsdelivr 可谓国内站长圈的头条常客,这不,又双叒叕(yòu shuāng ruò zhuó)打不开了. 如何解决这个问题?最简单的方法当然是使用别人建立的jsd镜像站,但是稳定性和可靠性就只能看镜像站长的心情了吧.自己动手丰衣足食,还是自己搞个镜像吧. 创建 jsdelivr 镜像站 首先,你需要有一台安装了 nginx 的服务器.推荐使用腾讯云轻量服务器的Matomo镜像,其中集成了最新稳定版 nginx.p

  • Android动态使用VectorDrawable过程详解

    目录 导言 案例演示 问题解决 接上篇继续,讲解使用动态的VectorDrawable 上篇链接: Android三种方式生成矢量图之VectorDrawable类使用详解 导言 VectorDrawable有两个优点,一个是缩放不失真,另一个是使PNG的体积,大幅度减小,那么如果仅仅只有这两个优点,其实我是并不需要使用VectorDrawable,或者说,这并不能成为我们使用VectorDrawable的重要原因. 那我们使用它的重要原因是什么呢? 那就是VectorDrawable可以使用动

  • docker网络配置过程详解介绍

    目录 Linux内核实现名称空间的创建 操作Network Namespace 创建veth pair 实现Network Namespace间通信 四种网络模式配置 容器的常用操作 自定义docker0桥的网络属性信息 Linux内核实现名称空间的创建 ip netns命令 可以借助ip netns命令来完成对 Network Namespace 的各种操作.ip netns命令来自于iproute安装包,一般系统会默认安装,如果没有的话,请自行安装. 注意:ip netns命令修改网络配置时

  • Linux静态库与动态库实例详解

    Linux静态库与动态库实例详解 1. Linux 下静态链接库编译与使用 首先编写如下代码: // main.c #include "test.h" int main(){ test(); return 0; } // test.h #include<iostream> using namespace std; void test(); // test.c #include "test.h" void test(){ cout<< &quo

  • Spring静态代理和动态代理代码详解

    本节要点: Java静态代理 Jdk动态代理 1 面向对象设计思想遇到的问题 在传统OOP编程里以对象为核心,并通过对象之间的协作来形成一个完整的软件功能,由于对象可以继承,因此我们可以把具有相同功能或相同特征的属性抽象到一个层次分明的类结构体系中.随着软件规范的不断扩大,专业化分工越来越系列,以及OOP应用实践的不断增多,随之也暴露了一些OOP无法很好解决的问题. 现在假设系统中有三段完全相似的代码,这些代码通常会采用"复制"."粘贴"方式来完成,通过这种方式开发

随机推荐