Nginx的虚拟主机

173 阅读3分钟

虚拟主机的概念

什么是虚拟主机

虚拟主机,就是把一台物理服务器划分成多个 “虚拟” 的服务器,这样我们的一台物理服务器就可以当做多个服务器来使用,从而可以配置多个网站。Nginx 提供虚拟主机的功能,就是为了让我们不需要安装多个 Nginx,就可以运行多个域名不同的网站。

每台虚拟主机都可以是一个独立的网站,可以具有独立的域名,具有完整的Intemet服务器功能(WWW、FTP、Email等),同一台主机上的虚拟主机之间是完全独立的。从网站访问者来看,每一台虚拟主机和一台独立的主机完全一样。

Nginx 下,一个 server 标签就是一个虚拟主机。nginx 的虚拟主机就是通过主配置文件 nginx.conf 中 server 节点指定的,想要设置多个虚拟主机,配置多个server节点即可。

配置虚拟主机的方法

配置虚拟主机有三种方法:

  • 基于域名的虚拟主机 : 不同的域名、相同的IP(此方式应用最广泛)。
  • 基于IP地址的虚拟主机 : 不同的域名、不同的IP ( 需要加网络接口 ,应用的不广泛), 基于IP地址。
  • 基于端口的虚拟主机 : 不使用域名、IP来区分不同站点的内容,而是用不同的TCP端口号。

基于域名的 Nginx 虚拟主机

为虚拟主机提供域名解析

[root@localhost ~]# echo "172.16.100.100 www.jlx.com www.chc.com" >> /etc/hosts

image.png

为虚拟主机准备网页文档

[root@localhost ~]# mkdir -p /var/www/html/can
[root@localhost ~]# mkdir -p /var/www/html/jlx
[root@localhost ~]# echo "<h1>www.jlx.com</h1>" > /var/www/html/jlx/index.html
[root@localhost ~]# echo "<h1>www.chc.com</h1>" > /var/www/html/can/index.html

image.png

修改Nginx的配置文件

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

.........  
http { 
.........       
     server {             
        listen   80;             
        server_name   www.jlx.com;       #设置域名www.jlx.com            
        charset   utf-8;             
        access_log   logs/www.jlx.access.log;  #设置日志名             
        location / { 
             root   /var/www/html/jlx;  #设置 www.jlx.com 的工作目录                   
             index   index.html   index.php;            
             }             
             error_page   500 502 503 504 /50x.html;             
             location = 50x.html {                  
             root   html;           
          }      
  }  ​       
  server {            
      listen   80;             
      server_name   www.chc.com;     #设置域名www.chc.com             
      charset   utf-8;             
      access_log   logs/www.chc.access.log;  #设置日志名            
      location / {       
           root   /var/www/html/can;   #设置 www.chc.com 的工作目录                  
           index   index.html   index.php;            
           }            
           error_page   
           500 502 503 504 /50x.html;            
           location = 50x.html {    
               root   html;            
               }      
      } 
 }


[root@localhost ~]# systemctl restart nginx

image.png

image.png

image.png

访问测试

image.png

image.png

基于IP 的 Nginx 虚拟主机

设置临时ip,以达到一台服务器拥有多个ip地址,不同ip访问不同的服务页面

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

......
http {
......
	server {
		listen 192.168.80.10:80;					#设置监听地址192.168.80.10
		server_name www.kgc.com;
		charset utf-8;
		access_log logs/www.kgc.access.log; 
		location / {
			root /var/www/html/kgc;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
	
	server {
		listen 192.168.80.11:80;					#设置监听地址192.168.80.11
		server_name www.benet.com;
		charset utf-8;
		access_log logs/www.benet.access.log; 
		location / {
			root /var/www/html/benet;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	
}

[root@localhost ~]# systemctl restart nginx

image.png

image.png

image.png

浏览器访问

image.png

image.png

基于端口的 Nginx 虚拟主机

修改IP地址后面的端口即可。

[root@localhost ~]# vim /usr/local/nginx/conf/nginx.conf

......
http {
......
	server {
		listen 192.168.80.10:555;					#设置监听端口为555
		server_name www.kgc.com;
		charset utf-8;
		access_log logs/www.kgc.access.log; 
		location / {
			root /var/www/html/kgc;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}
	
	server {
		listen 172.16.100.100:888;					#设置监听端口为888
		server_name www.benet.com;
		charset utf-8;
		access_log logs/www.benet.access.log; 
		location / {
			root /var/www/html/benet;
			index index.html index.php;
		}
		error_page 500 502 503 504 /50x.html;
		location = 50x.html{
			root html;
		}
	}	
}

[root@localhost ~]# systemctl restart nginx

image.png

image.png

浏览器访问

image.png

image.png