dns+nginx實現多虛擬主機


借鑒於朋友的需求,公司需要啟用域名訪問內部的業務系統,現實情況是內部的業務系統目前使用的是單主機,單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

   

   

   

   

   

   

   

   

   

   

   

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM