nginx(三):虚拟主机

虚拟主机

一个web服务器软件默认情况下只发布了一个web,一个web发布出去需要三个条件:ip、port、域名

一个web服务器软件如何发布多个web呢?

虚拟主机:就是把一台物理服务器划分成多个“虚拟”的服务器,每个虚拟主机都可以有独立的域名和工作目录

 

基于ip的虚拟主机

场景:一台物理服务器配置多个ip地址,每个ip地址发布一个web。  缺点:如果是对外提供服务的网站则每个ip都需要付费

实现过程:

  • 服务器网卡添加辅助ip:

ifconfig ens33:1 192.168.43.150/24

  • 辅助ip添加完毕后状态:

nginx(三):虚拟主机_nginx

 

  •  nginx 基于ip的虚拟主机配置:

server {
listen 192.168.43.133:80;
access_log logs/test.access.log test;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 192.168.43.150:80;
access_log logs/test.access.log test;
location / {
root html/web1;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

  • 测试基于ip的虚拟主机

nginx(三):虚拟主机_nginx_02

 

 

基于端口的虚拟主机

场景:nginx服务器只有一个ip地址时可以使用基于端口的虚拟主机,不过该种实现只能在内网使用,因为端口无法通告给dns

实现过程:

  • 去掉网卡辅助ip:

nginx(三):虚拟主机_nginx_03

 

  •  nginx基于端口虚拟主机配置:

server {
listen 80;
access_log logs/test.access.log test;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 9080;
access_log logs/test.access.log test;
location / {
root html/web2;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

  • 验证基于端口的虚拟主机:

nginx(三):虚拟主机_nginx_04

 

 

基于域名的虚拟主机

场景:nginx服务器只有一个公网ip且需要将多个web服务发布到公网,可以使用基于域名的虚拟主机来实现

实现过程:

  • 配置测试机器的本地hosts

192.168.43.133是nginx服务器的ip地址,后面的域名是nginx配置文件中的域名

192.168.43.133 www.web1.com
192.168.43.133 www.web2.com

  • nginx基于域名的虚拟主机实现配置文件

server {
listen 80;
server_name www.web1.com
access_log logs/test.access.log test;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name www.web2.com
access_log logs/test.access.log test;
location / {
root html/web2;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

  • 测试效果

nginx(三):虚拟主机_nginx_05