借鉴于朋友的需求,公司需要启用域名访问内部的业务系统,现实情况是内部的业务系统目前使用的是单主机,单nginx多端口的方式再运行,朋友最终想实现启用域名方式问题,且域名不需要用户手工输入端口号
两种思路,一种思路为新增加一台主机使用新增加的主机的nginx反向代理现有的业务系统,另外一直思路是启用nginx的虚拟主机功能。不管是那种思路,都需要配置dns。下文主要描述启用nginx的虚拟主机功能的操作步骤
测试环境
服务器:cetnos 7 1810
Nginx 1.4.2
Dns 使用centos7 1810光盘中携带的bind版本
nginx服务器,dns服务器地址为:172.16.103.8
需求清单,
实现访问aaa.baidu.com,访问的实际位置为172.16.103.8的80端口的nginx html目录中的aaa目录下的index.html,文件内容为aaa.baidu.com
实现访问bbb.baidu.com,访问的实际位置为172.16.103.8的80端口的nginx html目录中的bbb目录下的index.html,文件内容为bbb.baidu.com
参考文章:
https://blog.51cto.com/13525470/2054121
https://blog.csdn.net/qq_39591494/article/details/78857677?tdsourcetag=s_pctim_aiomsg
1,dns配置
挂载光盘
yum install -y bind
修改dns主配置文件
vi /etc/named.conf
12 options {
# options是全局服务器的配置选项,在这里指定的参数,对配置中的任何区域都有效
13 listen-on port 53 { 127.0.0.1; };
# 指定域名服务监听的网络端口,建议写本机IP,不建议写127.0.0.1,如果写127.0.0.1时,其他客户端将无法使用该dns服务器提供的服务,可以写本机的实际IP或者any
14 listen-on-v6 port 53 { ::1; };
15 directory "/var/named";
# 指定named从/var/named目录下读取DNS数据文件
16 dump-file "/var/named/data/cache_dump.db";
# 当执行导出命令时将DNS服务器的缓存数据存储到指定的文件中
17 statistics-file "/var/named/data/named_stats.txt";
# 指定named服务的统计文件,当执行统计命令时会将内存中的统计信息追加到该文件中
18 memstatistics-file "/var/named/data/named_mem_stats.txt";
19 allow-query { localhost; };
# 允许哪些客户端访问DNS服务,此处改为"any",表示任意主机
20
31 recursion yes;
# 开启递归查询
32
33 dnssec-enable yes;
# 开启加密
34 dnssec-validation yes;
# 在递归查询服务器上开启DNSSEC验证
35
36 /* Path to ISC DLV key */
37 bindkeys-file "/etc/named.iscdlv.key";
38
39 managed-keys-directory "/var/named/dynamic";
40
41 pid-file "/run/named/named.pid";
42 session-keyfile "/run/named/session.key";
43 };
44
45 logging {
# named服务的日志文件信息
46 channel default_debug {
47 file "data/named.run";
48 severity dynamic;
49 };
50 };
51 # 每一个zone就是定义一个域的相关信息以及指定了named服务从哪些文件中获得DNS各个域名的数据文件
52 zone "." IN {
# 根(.)域的配置及信息(配置缓存域名服务器,可以自己去了解)
53 type hint;
# 服务器类型
54 file "named.ca";
# 文件路径位置
55 };
56
57 include "/etc/named.rfc1912.zones";
# include代表该文件是子配置文件
58 include "/etc/named.root.key";
添加dns服务器需要解析的区域,添加区域需要修改/etc/named.rfc1912.zones文件
zone "baidu.com" IN {
type master;
file "baidu.com.zone";
allow-update { none; };
};
编辑正向解析区域数据文件
cd /var/named/
cp -p named.localhost baidu.com.zone
vi baidu.com.zone
$TTL 1D
@ IN SOA baidu.com. admin.baidu.com. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
aaa IN A 172.16.103.8
bbb IN A 172.16.103.8
重启named服务
systemctl restart named
安装dig客户端,测试解析是否正常
yum install bind-utils
修改本机dns服务器地址
vi /etc/resolv.conf
nameserver=172.16.103.8
测试在本机的dns解析
2,编译安装nginx
传送nginx软件包到/software目录下
[root@localhost software]# tar -zxvf nginx-1.14.2.tar.gz
安装依赖包
yum -y install gcc gcc-c++ autoconf automake pcre-devel openssl openssl-devel
进入解压后的目录,编译安装
[root@localhost software]# cd nginx-1.14.2
[root@localhost nginx-1.14.2]# ./configure --prefix=/usr/local/nginx
[root@localhost nginx-1.14.2]# make & make install
启动nginx服务
[root@localhost nginx-1.14.2]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
查看nginx的监听端口
[root@localhost nginx-1.14.2]# netstat -nutpl |grep nginx
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 5008/nginx: master
如果没有netstat命令,需要安装net-tools,在线安装net-tools的命令为
[root@localhost nginx-1.14.2]# yum install -y net-tools
得知ngxin监听的端口是80,使用浏览器访问两台的80端口上的内容
3,配置nginx的虚拟主机
编辑nginx配置文件,复制server配置项,修改server配置项
vi /usr/local/nginx/conf/nginx.conf
在nginx的html目录下创建aaa目录和bbb目录,并创建index.html文件
重启nginx
cd /usr/local/nginx/sbin/
./nginx -s reload
使用windows客户端做最终测试,windows客户端需要配置dns服务器地址指向172.16.103.8