借鉴于朋友的需求,公司需要启用域名访问内部的业务系统,现实情况是内部的业务系统目前使用的是单主机,单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

dns+nginx实现多虚拟主机的更多相关文章

  1. 第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置

    第四百零二节,Django+Xadmin打造上线标准的在线教育平台—生产环境部署,uwsgi安装和启动,nginx的安装与启动,uwsgi与nginx的配置文件+虚拟主机配置 软件版本  uwsgi- ...

  2. Nginx(二):虚拟主机配置

    什么是虚拟主机? 虚拟主机使用的是特殊的软硬件技术,它把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功 ...

  3. linux上nginx上配置虚拟主机的相关配置

    1.配置主配置: nginx/conf/nginx.conf 2.虚拟主机配置:nginx/conf/extra/learn.weixin.com.conf 配置完后,重启服务器!

  4. Nginx多站点虚拟主机实现单独启动停止php-fpm、单独控制权限设置

    Nginx多站点虚拟主机实现单独启动停止php-fpm.单独控制权限设置 来源:osyunwei.com 作者:qihang01 发表于:2012-08-19 21:26 点击: 说明: 站点1:bb ...

  5. Nginx中关于虚拟主机的一点冷门知识

    一些闲聊 坐标深圳南山. 前两天公司晚上9点过,通知第二天要48小时核酸才能进办公楼.看到消息,已经是9点半多了,走到公司附近的核酸点,是10点过.然后发现那个点人好少,走近了才发现核酸点已经下班了, ...

  6. 通过ngx-lua来统计Nginx上的虚拟主机性能数据

    Web server调研分析 Filed under: Web Server — cmpan @ 2012-10-29 20:38:34 摘要 简单可依赖的架构首先需要有一个简单可依赖的前端WebSe ...

  7. Nginx如何配置虚拟主机?

    注意,该环境是依赖于http://www.php20.com/forum.php?m ... &extra=page%3D1 基础上进行配置.默认不具备这些文件 .下面是增加一个mytest点 ...

  8. Nginx下配置虚拟主机的三种方法

    Nginx下,一个server标签就是一个虚拟主机. 1.基于域名的虚拟主机,通过域名来区分虚拟主机——应用:外部网站 2.基于端口的虚拟主机,通过端口来区分虚拟主机——应用:公司内部网站,外部网站的 ...

  9. nginx介绍(三) - 虚拟主机

    前言 前面提到过, 由nginx来分发请求到tomcat中, 那么怎么来区分这些tomcat呢? 我们一般访问网站的时候, 是不是可以使用 ip : port (127.0.0.1:8080)的方式来 ...

随机推荐

  1. linux重启mysql

    一. 启动1.使用 service 启动:service mysql start2.使用 mysqld 脚本启动:/etc/inint.d/mysql start3.使用 safe_mysqld 启动 ...

  2. php安全 过滤、验证、转义

    不要相信外部源 $_GET $_POST $_REQUEST $_COOKIE $argv php://stdin php://input file_get_contents() 远程数据库 远程ap ...

  3. 整理常用的 vim 命令

    vim 是一款功能强大的文本编辑器,它是Linux下常用的编辑器之一,对于熟练掌握了 vim 的人来说,用它编辑文件,方便又快捷,能极大的提高工作效率 vim 功能强大,对应的命令也非常的多,对于初学 ...

  4. mysql从零开始之MySQL LIKE 子句

    MySQL LIKE 子句 我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录. WHERE 子句中可以 ...

  5. 分布式锁Redission

    Redisson 作为分布式锁 官方文档:https://github.com/redisson/redisson/wiki 引入依赖 <dependency> <groupId&g ...

  6. Visual Studio Docker调试端口设置

    一.前言 在Visual Studio 调试程序时,Docker中的容器端口和主机端口映射随机生成,导致每次调试都需要修改前端API接口的地址 二.解决方案 1.修改Docker调试启动参数,找到启动 ...

  7. 题解 [HNOI2012]集合选数

    题目传送门 题目大意 直接看题面吧. 思路 感觉挺水的一道题啊?怎么评到紫色的啊?考试的时候LJS出了这个题的加强版我就只想出这个思路,然后就爆了... 不难发现,我们可以构造矩阵: x 2x 4x ...

  8. spoj2 prime1 (区间筛)

    给定t组询问,每组询问包括一个l和r,要求\([l,r]\)的素数有哪些 其中\(t \le 10,1 \le l \le r \le 1000000000 , r-l \le 100000\) Qw ...

  9. 《手把手教你》系列技巧篇(三十二)-java+ selenium自动化测试-select 下拉框(详解教程)

    1.简介 在实际自动化测试过程中,我们也避免不了会遇到下拉选择的测试,因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助. 2.select 下拉框 2.1Select ...

  10. c语言中for循环 和嵌套for循环

    for循环:for( ; ; )里面是bai3个语句,两个分号.第一个语句是开始前执行,第二个语句是判断真假,如果真,就执行后面(大括号内)的代码.第三个语句是每次执行完毕后执行的东西,通常第三个语句 ...