局域网多个 web 服务域名解析( DNS ) + Nginx 反向代理隐藏端口号

[TOC]

参考资料

nginx配置反向代理示例 - cnblogs
技巧集:nginx作代理时,查看请求被转发到哪台服务器 -
CentOS7 搭建 DNS 域名解析服务器
CentOS7 使用 yum 安装配置 Nginx
TPLINK路由器DHCP中DNS设置 - 百度知道

背景

局域网内,有很多的服务器,提供不同的服务

服务描述 IP 端口
主路由器 192.168.0.1 80
项目A测试环境 192.168.0.232 8080
项目A正式环境镜像 192.168.0.233 8080
jenkins 192.168.0.235 8080
DNS服务 192.168.0.235 53
Nginx 192.168.0.11 80

目前,访问局域网中这些服务都要采用 IP + 端口 的方式访问,这样有存在几个问题:

  • IP + 端口 的访问形式,与外网访问服务方式不同,有些业务场景难以重现
  • IP + 端口 的访问形式,不容易记忆,服务容易混淆
  • IP + 端口 的访问形式,不够优雅

解决方案

预期效果

  • 局域网中,用户使用自动 IP ,自动 DNS 配置
  • 用户可以正常使用域名(不带端口号)访问局域网中假设的 web 服务
  • 如果有需要,可以容易的知道 web 服务的具体 IP 和 端口号

网络拓扑结构

image.png

总路由器配置

路由器配置,主要是解决局域网用户使用自动 IP 自动 DNS 配置时,有限使用局域网内的 DNS 服务进行域名解析

使用 主路由器 的 DHCP 服务 达成目标。

注意 将主 DNS 服务 IP 设置为局域网 DNS 服务器的 IP!

image.png

DNS 配置文件设置

各个 web 服务计划解析后的域名和访问方式

服务描述 IP 端口 域名 访问 URL
项目A测试环境 192.168.0.232 8080 test.reading.zt http://test.reading.zt/admin/index/login.htm
项目A正式环境镜像 192.168.0.233 8080 mirror.reading.zt http://mirror.reading.zt/admin/index/login.htm

注意 由于我们采用 Nginx 服务器进行反向代理,因此,DNS 全部指向 Nginx 服务器;并在 DNS
正向域名解析文件配置文件中,对同一个 IP 配置多个域名。

参考配置

配置正向域名解析文件 named.reading.zt : vi /var/named/named.reading.zt ,配置内容如下:

$TTL 1D
@   IN SOA  @ rname.invalid. (
                    0   ; serial
                    1D  ; refresh
                    1H  ; retry
                    1W  ; expire
                    3H )    ; minimum
    NS  @
    A   127.0.0.1
    AAAA    ::1
mirror  A   192.168.0.11
test    A   192.168.0.11

DNS 服务器的搭建和配置,可以参考:CentOS7 搭建 DNS 域名解析服务器

Nginx 配置文件设置

注意

我采用的是 yum 安装的 Nginx 1.14.2;Nginx 配置文件存放路径为 /etc/nginx/conf.d

参考配置

反向代理 192.168.0.232 -> test.reading.zt 配置为: vi /etc/nginx/conf.d/test.reading.zt.conf

server {
  listen       80;
  server_name  test.reading.zt;

  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-Ip $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://192.168.0.232:8080;
    add_header backendIP $upstream_addr;
    add_header backendCode $upstream_status;
  }
}

反向代理 192.168.0.233 -> mirror.reading.zt 配置为: vi /etc/nginx/conf.d/mirror.reading.zt.conf

server {
  listen       80;
  server_name  mirror.reading.zt;

  location / {
    proxy_set_header Host $host;
    proxy_set_header X-Real-Ip $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://192.168.0.233:8080;
    add_header backendIP $upstream_addr;
    add_header backendCode $upstream_status;
  }
}

Nginx 服务器的搭建和配置,可以参考:CentOS7 使用 yum 安装配置 Nginx

如何查看 web 服务提供的服务器 IP

以 chrome 为例,F12 后操作如下图

image.png

你可能感兴趣的:(局域网多个 web 服务域名解析( DNS ) + Nginx 反向代理隐藏端口号)