栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Nginx配置虚拟主机

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nginx配置虚拟主机

1 虚拟主机介绍

​ 虚拟主机是一种特殊的软硬件技术,它可以将网络上的每一台计算机分成多个虚拟主机,每个虚拟主机可以独立对外提供www服务,这样就可以实现一台主机对外提供多个web服务,每个虚拟主机之间是独立的,互不影响的。

​ 虚拟主机技术是互联网服务器采用的节省服务器硬件成本的技术,虚拟主机技术主要应用于HTTP(Hypertext Transfer Protocol,超文本传输协议)服务,将一台服务器的某项或者全部服务内容逻辑划分为多个服务单位,对外表现为多个服务器,从而充分利用服务器硬件资源。

Nginx支持三种类型的虚拟主机配置

  1. 基于IP的虚拟主机

  2. 基于端口的虚拟主机

  3. 基于域名的虚拟主机

2 基于IP的虚拟主机配置方式

需求
一台Linux服务器绑定两个ip:192.168.20.101、192.168.20.99
访问不同的ip请求不同的html目录,即:
访问http://192.168.20.101将访问“html101”目录下的html网页
访问http://192.168.20.99将访问“html99”目录下的html网页
Linux绑定多IP
Linux操作系统允许绑定多IP。是在一块物理网卡上可以绑定多个lP地址。这样就能够在使用单一网卡的同一个服务器上运行多个基于IP的虚拟主机。但是在绑定多IP时需要将动态的IP分配方式修改为静态的指定IP。
将动态IP修改为静态IP

[root@node1 ~]# cd /etc/sysconfig/network-scripts
[root@node1 network-scripts]# ls
ifcfg-ens33
[root@node1 network-scripts]# vim ifcfg-ens33 
BOOTPROTO="static"
IPADDR0=192.168.20.101
IPADDR1=192.168.20.99
[root@node1 network-scripts]# service network restart  # centos6、7重启网卡
[root@node1 ~]# systemctl restart network #centos7重启网卡
[root@node0 network-scripts]#reboot  #各种发行版都是可以的
#CentOS8重启网卡 nmcli c reload ens33

修改Nginx的配置文件完成基于IP的虚拟主机配置**

Nginx的配置文件nginx.conf

如上述配置文件所示,主要由6个部分组成:
main:用于进行nginx全局信息的配置

events:用于nginx工作模式的配置

http:用于进行http协议信息的一些配置

server:用于进行服务器访问信息的配置

location:用于进行访问路由的配置

upstream:用于进行负载均衡的配置
修改配置nginx.conf

[root@node1 network-scripts]# vim /usr/local/nginx/conf/nginx.conf
#一个Server就是一个虚拟主机
    server {
        listen       80;
	#为虚拟机指定IP或者是域名
        server_name  192.168.20.101;
	#主要配置路由访问信息
        location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
            root   html101;
	    #在不指定访问具体资源时,默认的展示资源的列表
            index  index.html index.htm;
        }   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    #一个Server就是一个虚拟主机
    server {
        listen       80;
	    #为虚拟机指定IP或者是域名
        server_name  192.168.20.99;
	    #主要配置路由访问信息
        location / {
	    #用于指定访问根目录时,访问虚拟主机的web目录
            root   html99;
	    #在不指定访问具体资源时,默认的展示资源的列表
            index  index.html index.htm;
        }  
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

准备需要的目录和html页面:

[root@node1 conf]# cd ../
[root@node1 nginx]# ls
conf  html  logs  sbin  scgi_temp
[root@node1 nginx]# cp -r html/ html101
[root@node1 nginx]# ls
conf  html  html101  logs  sbin  scgi_temp
[root@node1 nginx]# vim html101/index.html 
......

Welcome to nginx 192.168.20.101!

Thank you for using nginx.

[root@node1 nginx]# cp -r html101 html99 [root@node1 nginx]# vim html99/index.html

Welcome to nginx 192.168.20.101!

#改为

Welcome to nginx 192.168.20.99!

[root@node1 nginx]#

重启Nginx服务:

[root@node1 nginx]# cd /usr/local/nginx/sbin/
[root@node1 sbin]# ./nginx 

测试
访问http://192.168.20.101将访问“html101”目录下的html网页

访问http://192.168.20.99将访问“html99”目录下的html网页

3 基于端口的虚拟主机配置方式

需求

Nginx对提供8888与9999两个端口的监听服务

请求8888端口则访问html8888目录下的index.html

请求9999端口则访问html9999目录下的index.html

还原IP地址为192.168.20.101:

vim /etc/sysconfig/network-scripts/ifcfg-ens33
#将:
IPADDR0=192.168.20.101
IPADDR1=192.168.20.99
#改为
IPADDR=192.168.20.101
#重启网络服务
systemctl restart network

修改Nginx的配置文件完成基于端口的虚拟主机配置

#一个Server就是一个虚拟主机 基于端口
server {
    listen       8888;
	#为虚拟机指定IP或者是域名
    server_name  192.168.20.101;
	#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   html8888;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
#一个Server就是一个虚拟主机
server {
    listen       9999;
	#为虚拟机指定IP或者是域名
    server_name  192.168.20.101;

	#主要配置路由访问信息
    location / {
		#用于指定访问根目录时,访问虚拟主机的web目录
        root   html9999;
		#在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

准备需要的目录和html页面:

[root@node1 nginx]# cp -r html101/ html8888
[root@node1 nginx]# cp -r html101/ html9999
[root@node1 nginx]# vim html9999/index.html 

Welcome to nginx 192.168.20.101:9999!

[root@node1 nginx]# vim html8888/index.html

Welcome to nginx 192.168.20.101:8888!

重启Nginx服务

[root@node1 nginx]# cd /usr/local/nginx/sbin/
[root@node1 sbin]# ./nginx 

测试:
请求http://192.168.20.101:8888则访问html8888目录下的index.html

请求http://192.168.20.101:9999则访问html9999目录下的index.html

4 基于域名的虚拟主机配置方式

需求

两个域名指向同一个nginx服务器,用户访问不同的域名时显示不同的内容。

域名规划:

1, www.bjsxt.cn

2, www.baizhan.cn

修改windows的hosts文件配置域名与ip的映射

文件路径:C:WindowsSystem32driversetchosts

192.168.20.101 node1 www.bjsxt.cn www.baizhan.cn

修改nginx.conf配置文件

server {
    listen       80;
	#为虚拟机指定IP或者是域名
    server_name  www.bjsxt.cn;
	#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   bjsxt;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}
#一个Server就是一个虚拟主机
server {
    listen       80;
#为虚拟机指定IP或者是域名
    server_name  www.baizhan.cn;
#主要配置路由访问信息
    location / {
    #用于指定访问根目录时,访问虚拟主机的web目录
        root   baizhan;
    #在不指定访问具体资源时,默认的展示资源的列表
        index  index.html index.htm;
    } 
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   html;
    }
}

准备需要的目录和html页面:

[root@node1 nginx]# cp -r html101/ bjsxt
[root@node1 nginx]# cp -r html101/ baizhan
[root@node1 nginx]# vim bjsxt/index.html 

Welcome to nginx bjsxt!

Thank you for using bjsxt.

[root@node1 nginx]# vim baizhan/index.html

Welcome to baizhan!

Thank you for using baizhan.

重启Nginx服务

[root@node1 nginx]# cd /usr/local/nginx/
[root@node1 nginx]# cd sbin/
[root@node1 sbin]# ./nginx 

测试:

请求www.bjsxt.cn则访问bjsxt目录下的index.html

请求www.baizhan.cn则访问baizhan目录下的index.html

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/334659.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号