Nginx: 基于多网卡,端口,域名的虚拟主机实现

虚拟主机的分类

  • 虚拟主机其实也就是利用我们的单台服务器去构筑出多个不同类型的网站
  • 虚拟主机有很多种的分类,基本上可以总体分为三类
  • 第一种是基于多IP的虚拟主机
  • 第二种是基于多端口的虚拟主机
  • 第三种是基于域名的虚拟主机

1 ) 基于 多IP 的虚拟主机

  • 如果想要构建一个基于多IP的虚拟服务器,其实也就是在我们单台服务器上通常会有多块网卡
  • 然后在每一块网卡上配置对应的IP地址,然后每一个IP地址都可以给它布置上虚拟主机
  • 这个虚拟主机其实就是对应不同的一些站点,比如说,个人有三个不同类型的网站
  • 但是,这个网站的访问流量都很小,没有必要去为其单独的使用一台服务器来进行部署
  • 可以基于这种多IP的虚拟主机进行部署, 通常, 个人站点, 基本上很多情况下都只是为个人使用
  • 所以直接配置IP形式的话,自己知道就行了,不需要每一个公网的域名去映射
  • 这种是基于多IP的虚拟主机

2 ) 基于 多端口 的虚拟主机

  • 在单台服务器上进行部署,但是,通常网卡只有一块
  • 可以基于不同的端口来提供不同的服务
  • 比如,同一个IP地址的80端口可以提供一个网站
  • 81 也可以提供一个网站服务,82也可以提供一个网站服务
  • 这种,就是基于多端口的一个虚拟主机的实现形式
  • 上面这两种通常都是用于个人演示,个人站点,内部使用的时候,构建的一个虚拟主机形式
  • 在实际的生产环境中(对外提供服务) 的形式是不常用的

3 ) 基于 域名 的虚拟主机

  • 虚拟主机的的实现形式用起来就是比较多
  • 这种形式通常就是说可以在一台物理主机上使用不同的域名来区分不同的网站服务
  • 基于域名的虚拟主机部署的服务都是不同的

基于多网卡的虚拟主机实现


1 ) 网卡和IP配置

  • 也是多IP的虚拟主机,这里可以使用虚拟机来模拟,增加几台虚拟网卡
  • 之后对网卡文件进行编辑处理,默认只有一个网卡文件
  • $ ifconfig 假如,有如下的显示
    ens33: ....  这里对应有一个ip地址, 假如是 192.168.184.240
    
    ens37: ... 这里对应有一个ip地址
    
    ens 38: ... 这里对应有一个ip地址
    
  • $ cd /etc/sysconfig/network-scripts/ && ls
    • 下面比如有这个文件:ifcfg-ens33
    • 复制两份,$ cp ifcfg-ens33 ifcfg-ens37 这个37要保持和 ip a 中的显示一致,这里举例
    • $ cp ifcfg-ens33 ifcfg-ens38 同上
  • 对 ifcfg-ens37 进行编辑
    • 移除 UUID 因为这个不能和之前重复
    • 修改 NAME=ens37
    • 修改 DEVICE=ens37
    • IPADDR=192.168.184.242
  • 同样,对 ifcfg-ens38 进行编辑
    • 同上,修改成 ens38 ,并且IP最后改成 244
  • 重启网络 $ systemctl restart network
  • 使用 $ ifconfig 来重新验证,三块网卡都改成了想要的样子
  • 如果在真实的环境,比如云服务器,购买了公网IP,可以直接在上面配置即可

2 )Nginx 核心配置

user 			nginx;
worker_processes  auto;

events {
	worker_connections  1024;
}

http {
	include          mime.types;
	default_type    application/octet-stream;
	
	sendfile      on;
	keepalive_timeout    65;
	
	server {
		listen     192.168.184.240;     # 这里监听第一块网卡,默认 80 端口,可省略
		server_name     localhost;
		
		location  / {
			root     html/server1;  # 这里的 root 相对于编译时的参数 --prefix=/opt/nginx, 全路径为:/opt/nginx/html/server1
			index   index.html     index.htm;  # 在上述目录下寻找这两个文件
		}
	}
	
	server {
		listen     192.168.184.242; # 这是第二台
		server_name     localhost;
		
		location  / {
			root     html/server2;
			index   index.html     index.htm;
		}
	}
	
	server {
		listen     192.168.184.244; # 这是第三台
		server_name     localhost;
		
		location  / {
			root     html/server3;
			index   index.html     index.htm;
		}
	}
}
  • 准备好相关文件

    • html/server1/index.html 这里显示 server1
    • html/server2/index.html 这里显示 server2
    • html/server3/index.html 这里显示 server3
  • 检查配置文件 $ /opt/nginx/sbin/nginx -t

  • 重载配置文件 $ /opt/nginx/sbin/nginx -s reload

  • 访问

    • 192.168.184.240 显示 server1
    • 192.168.184.242 显示 server2
    • 192.168.184.244 显示 server3

基于端口的虚拟主机实现

这里直接配置 nginx,下面是核心配置

http {

	server {
		listen    8080;   
		server_name     localhost;
		
		location  / {
			root     html/p-server1; 
			index   index.html;
		}
	}
	
	server {
		listen    8081;   
		server_name     localhost;
		
		location  / {
			root     html/p-server2; 
			index   index.html;
		}
	}
}
  • 准备好相关文件
    • html/p-server1/index.html 这里显示 p-server1
    • html/p-server2/index.html 这里显示 p-server2
    • html/p-server1/manager/admin.html 这里显示 admin
  • 检查和reload之后,进行访问
    • 192.168.184.240:8080 显示 p-server1
    • 192.168.184.240:8081 显示 p-server2
  • 访问:192.168.184.240:8080/manager/admin.html
    • 这里会显示 admin
    • 如果是中文页面可能有乱码,在相关块中设置 charset utf-8;
    • 参考文档:ngx_http_charset_module
  • 如果当前主机上有多网卡,也可以这样访问,这里借用上述多网卡环境
    • 192.168.184.242:8080 显示 p-server1
    • 192.168.184.242:8081 显示 p-server2
    • 192.168.184.244:8080 显示 p-server1
    • 192.168.184.244:8081 显示 p-server2

基于域名的虚拟主机实现

  • 域名可以从运营商处购买,之后可以在公网使用,如果先不买,本机配置 hosts 来模拟
http {
	server {
		listen 80;
		server_name   www.abc.com;
		
		location / {
			root html/domai_vm1;
			index  login.html
		}
	}

	server {
		listen 80;
		server_name   www.abc.cn;
		
		location / {
			root html/domai_vm2;
			index  admin.html
		}
	}
}
  • 准备好 host: $ vim /etc/hosts

    192.168.184.240        www.abc.com
    192.168.184.240        www.abc.cn
    
  • 准备好相关文件

    • domain_vm1/login.html 显示 abc.com
    • domain_vm2/admin.html 显示 abc.cn
  • 检查,重载配置,并访问

    • www.abc.com 显示 abc.com
    • www.abc.cn 显示 abc.cn
  • 13
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值