假设现在有这么一个场景,你有多套业务场景需要对应多个nginx来实现,这个时候,你或许会选择这样一个搭建形式:
服务器1 ———— nginx1 ———— 业务服务1
服务器2 ———— nginx2 ———— 业务服务2
服务器3 ———— nginx3 ———— 业务服务3
这种配置方式貌似可以解决你的问题,但是呢,这种配置方式会造成大幅度的浪费,这个时候,便有nginx虚拟主机配置方式的出现了。
1、什么是虚拟主机
虚拟主机就是使用特殊的软硬件技术,把一台计算机主机分成多台“虚拟”的主机,每一台虚拟主机都具有独立的域名和IP地址(或共享的IP地址),具有完整的Internet服务器功能。在同一台硬件、同一个操作系统上,运行着为多个用户打开的不同的服务器程序,互不干扰;而各个用户拥有自己的一部分系统资源(IP地址、文件存储空间、内存、CPU时间等)。(来源于https://cloud.tencent.com/developer/article/1339492)
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文件来完成域名的一个模拟