假设现在有这么一个场景,你有多套业务场景需要对应多个nginx来实现,这个时候,你或许会选择这样一个搭建形式:

        服务器1 ———— nginx1 ———— 业务服务1

        服务器2 ———— nginx2 ———— 业务服务2

        服务器3 ———— nginx3 ———— 业务服务3

这种配置方式貌似可以解决你的问题,但是呢,这种配置方式会造成大幅度的浪费,这个时候,便有nginx虚拟主机配置方式的出现了。

1、什么是虚拟主机

       虚拟主机就是使用特殊的软硬件技术,把一台计算机主机分成多台“虚拟”的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能。在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程序,互不干扰;而各个用户拥有自己的一部分系统资源(IP地址、文件存储空间、内存、CPU时间等)。

2、Nginx实现基本流程

             虚拟主机1 ———— 业务服务1

nginx    虚拟主机2 ———— 业务服务2

             虚拟主机3 ———— 业务服务3

就是:在一个nginx上运行多套单独的业务服务,这些服务相互独立,互不影响。

3、三种实现方式

(1)基于主机的多IP方式

          基于主机多IP的实现方式,也就是利用nginx分别监听不同的一个IP地址从而达到不同的请求转发

        IP                                                      Nginx

192.168.1.1                         IP1 192.168.1.1      虚拟主机A

192.168.1.2      ————>  IP2 192.168.1.2      虚拟主机B

192.168.1.3                        IP3 192.168.1.3       虚拟主机C

        1、多网卡多IP方式(一个网卡对应一个IP)

 

        2、单网卡多IP方式(一个网卡对应多个IP)

 

(2)基于端口的配置方式

        IP                                                  Nginx

192.168.1.1:80                      端口1 80      虚拟主机A

192.168.1.1:81     ————> 端口2 81      虚拟主机B

192.168.1.1:82                      端口3 82       虚拟主机C

(3)多域名方式(多host方式)

        IP                             Nginx

host1                      host1      虚拟主机A

host2     ————> host2      虚拟主机B

host3                      host3       虚拟主机C

4、具体实现

(1)基于主机的多IP方式

主机多IP的配置方式很简单:

ps:这种方式对主机要求较高,需要你有多个网卡。

1、实现单个网卡,多个IP的绑定

ip a 查看网卡与IP的绑定

添加ip到你的设备上 ip a add 192.168.3.xxx/掩码 dev eth0

然后完成nginx配置:

如何把一台服务器 虚拟化为多台 服务器 服务器虚拟多台主机_虚拟主机

检查是否正确:nginx -tc /etc/nginx/nginx.conf

先停止:nginx -s stop -c /etc/nginx/nginx.conf

再重启:nginx -c /etc/nginx/nginx.conf

(2)基于端口的配置方式

这种方式跟上一种方式差不多,只是listen 监听的不是IP而是端口。

注意不要发生端口冲突占用(ss -luntp)

(3)多域名方式(多host方式)

其实这种方式跟上面的也差不多少,就是需要修改server_name 指定到你想要请求的域名上

可以通过修改host文件来完成域名的一个模拟