[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 和 端口号
网络拓扑结构
总路由器配置
路由器配置,主要是解决局域网用户使用自动 IP 自动 DNS 配置时,有限使用局域网内的 DNS 服务进行域名解析
使用 主路由器 的 DHCP 服务 达成目标。
注意 将主 DNS 服务 IP 设置为局域网 DNS 服务器的 IP!
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 后操作如下图