目录
如何用Nginx搭建多网址服务器?
基于ip地址的虚拟主机
1. 先建立存储网页的目录
2.进行子配置
3.编写.conf文件
基于端口号的虚拟主机
基于域名的虚拟主机
如何用Nginx搭建多网址服务器?
有些网站,ip不同,域名不同,网页内容也不一样,可能会以为背后是在访问多个主机,实则是一个,因为现在的电脑都可以安装虚拟机,用MacBook的人就知道,有时候想打游戏,结果游戏不支持Mac,支持Windows,此时要做的就是下个虚拟机,将游戏放在虚拟机上运行,虽然Mac会烫,但你打游戏的心可不会凉,同理,虚拟机也可以有IP地址,跟本主机的ip地址不一样,所以要用到虚拟主机功能,用户就可以用不同的ip、端口、域名来进行访问
基于ip地址的虚拟主机
多个网站在一个机子上,则需要多个ip,指的是一个主机对眼多个ip,但一个ip不能对应多个主机:主机一对多,IP一对一
原理:一个服务器有着多个IP地址,而且每个IP地址与服务器上部署的网站一一对应,当用户请求的IP地址不同,则会访问到不同的网页,且每个网站都有一个独立的IP地址
PS⚠️:主机必须有多个IP地址
如何添加多个ip则需要用到nmcli指令
先用ip a进行查看自己的网卡以及现有的ip地址
得到网卡的名字后使用nmcli命令:
nmcli c modify enp0s5 +ipv4.addresses 10.211.55.20/24
c指的是创建,emp0s5是我的网卡名,+ipv4.address是指添加ip地址,只需要在最后把ip地址填上即可,并在ip地址的后面加上子网掩码
通用格式:nmcli c modify 网卡名 +ipv4.addresses 所添加的ip地址/子网掩码
设置完后,因为我们已经在此时动了nginx的文件,需要将其重新加载,只需运用:
重新加载:
nmcli c reload
将网卡重新加载:
nmcli c up enp0s5(通用格式下末尾的网卡填自己的)
进行完后,即可测试添加的ip是否正常启动
正常后,若要将其设置成网站,即可按照之前那样进行
1. 先建立存储网页的目录
第一个
mkdir -p /www/zy
第二个
mkdir -p /www/wy
若要将其与前面的分开,则需要将两个html文件分开放置,所以建立的目录也得是不一样的名字,因为此时是要搭建两个网站,所以两个网站就要有两个server,此时用子配置来进行设置
2.进行子配置
进入nginx的主配置文件里,用 ’vim /nginx/nginx.conf‘ 找到有个代码是:include开头的server上面那个
该代码的作用是如果在/etc/nginx/conf.d文件下的子配置文件有东西就会自动加载到这个位置,相当于就是,一个网站一个文件,分开管理,此时就是该在/etc/nginx/目录下建立一个以.conf为结尾的文件(此处原本路径里的*表示任一)并且在文件里写入主机的server配置,有几个主机就写几个
3.编写.conf文件
cd到/etc/nginx/conf.d下后,直接编写因为直接编写也会包含创建文件:
vim pdhost.conf
此处我用pdhost写作文件名,是因为虚拟机为苹果的’Parallels Desktop‘-pd为其简写,host中文意思为主机,这样写有利于后期管理
server {listen 80; 端口号server_name 10.211.55.10; 网站所要搭建在的IP地址root /www/wy; html文件所在的路径}(为第一个网站的设置)server {listen 80;server_name 10.211.55.20;root /www/zy}
写完后就可以退出编辑模式,切记!⚠️是wq保存退出,然后可以使用nginx -t检查命令是否有错误,没错后即可,因为动了配置后,只需要重启nginx服务就好了,然后两个网站就搭建好了
例子:由Mac搭建,因为还不会用pd传文件,所以就搭建了两个目录网站
切记!如果是要搭建目录网站,必须将autoindex on给打开,不然就会出现403报错
(10.211.55.10)
(10.211.55.20)
基于端口号的虚拟主机
原理:基于端口号的主机,可以让用户通过一个ip地址的不同端口号来访问不同的网站
首先先建立两个文件夹,用于储存文件
mkdir -p /www/port{5111,5222}
一口气创建两个文件夹,到“{”前填写一样的,“{”后写不一样的,就像文件名,
所以此时创建了叫port5111和port222的两个文件夹
然后修改主配置文件,直接打开nginx的conf文件,直接vim /etc/nginx/nginx.conf
找到server后,将第一个listen后面的80端口进行更改,改为刚刚设置的5111端口,下面一个listen是ipv6可以将其删除,然后html文件,第一个的路径就不进行修改
然后将整个server进行复制粘贴一遍,第二个server就做成一个,目录网站,将autoindex打开,选择一个目录,将root路径进行更改,以及最重要的是更改其端口为5222,以及ipv6删除后,退出vim,重启服务
最后进行访问时,记得在ip地址的后面加上修改后的每个网站的端口号
基于域名的虚拟主机
原理:当服务器无法给每个网站都分配一个独立的IP地址时,可以通过用户请求的域名不同实现传输不同的网页数据
域名:就是一个电话薄,上面记的是电话号码(IP地址),只需找到名字(域名)即可
linux的本地域名解析在etc下的hosts,由于域名被国家监管,域名无法申请,所以只能模拟域名,在本地,也就是自己的电脑进行域名解析
首先Mac我找不到本地的域名解析文件,Windows找得到,就是在c盘里Windows,system32,drivers,etc里的hosts文档,用记事本打开
打开后直接在最下面添加要加的ip地址和域名:“ 10.211.55.10 www.wy.com ”然后保存退出
进入Linux后,直接编辑Linux里的域名解析文件:“vim /etc/hosts” 进入文件后也是直接在下面添加要加的ip地址和域名:“ 10.211.55.10 www.wy.com ”,然后保存退出
最后进入nginx的主配置文件,找到server,将server_name 进行更改
最后保存退出即可,但由于是修改了nginx的主配置文件,即需要将其重启一遍
(如果是搭建两个或多个网站,然后要用到域名解析,则在添加IP地址后,将每个IP地址对应的域名写入到电脑本身的hosts里,以及linux里的域名解析文件,最后也是最重要的,在nginx的主配置文件里需要将,每个域名都对应不同的server和html文件路径,则就需要将server复制粘贴并进行修改,此处以www.pewpew.com做个目录文件/var为例
端口号注意不能变,最后也是保存退出,重启nginx即可)