Nginx虚拟主机

什么是虚拟主机?

一个nginx提供多个网站的服务。

虚拟机是虚拟化技术,虚拟主机不是虚拟化技术。每个虚拟主机之间是独立的,互不影响。

它的意思是,比如现在在一台物理服务器安装了nginx,但是物理服务器(或虚拟机),配置比较高,但是访问量不大,在这种情况下,如果还有项目需要web服务器,就没必要在额外的整一台虚拟机或者物理服务器了,就用这一个nginx服务,可以同时提供多个网站的访问,还可以提供多个域名,说白了正常情况下,一个nginx提供一个网站的服务。现在一个nginx提供多个网站的服务。这种情况下每一个网站都是虚拟主机,客户那里认为我是独立的主机,实际上提供服务的是虚拟的主机,它不是一个完整的nginx,它只是nginx里边配置的一部分,配置的一个网站,apache和nginx都可以这么做。

比如阿里,腾讯都卖虚拟主机,他们卖的虚拟主机无非就是nginx配置文件配置出来的一个目录,这个目录可以让你放网站,你不能做其他的操控,只能把你的网站,放在它卖给你的目录下。这个目录一般会有大小限制,按照大小,配置不同要不同的收费。

虚拟主机的分类,有什么区别?

1、基于域名的虚拟主机  【用的最多】(server_name来区分虚拟主机——应用:外部网站)
2、基于ip的虚拟主机, (一块主机绑定多个ip地址)
3、基于端口的虚拟主机 (端口来区分虚拟主机——应用:公司内部网站,外部网站的管理后台)

它主要用什么东西去判断这是不同的虚拟主机?

域名、ip、端口。

基于域名的虚拟主机

在http默认有一个server,这就是一个虚拟主机,给它再加一个server,就是另外一个虚拟主机。这两个虚拟主机可以放在不同的网站,它们不同的地方在于,域名不一样,发布网站的目录不一样。其他的随意,看想不想做限速,想访问不同的网站,根据域名访问。

用rpm安装的nginx。默认情况下什么都不用配,直接就可以把服务启动起来。

 [root@bogon ~]# systemctl status nginx 现在服务属于启动状态

在本地访问一下

[root@bogon ~]#curl 127.1

找它的配置文件,配置文件都会在/etc/nginx/下面,里面有个nginx.conf,这是它的主配置文件,

[root@bogon nginx]# vim /etc/nginx/nginx.conf 进入它的主配置文件。

进入之后,上面的东西先别动,动的是http里面的server,现在里面没有server,因为rpm安装的nginx稍微做了点优化,它把主配置文件分开到其他目录里了。

 配置文件最下面,有个include,它里面所有的内容相当于http的一部分,相当于主配置文件的一部分,它是用include包含进来了,去修改*.conf文件就相当于修改http文件。

找etc/conf.d/目录

conf.d 这个也是存放的配置文件,有个默认的default.conf

[root@bogon conf.d]# vim default.conf 

刚才主配置文件没server,它把server放到这里了,每一个server就是一台独立的虚拟主机,里面的是默认的,再去复制一个。复制之前,先把默认server的域名改了,改成web1.server.com

  listen端口是80

server_name 域名是localhost

access_log   默认访问日志的位置

location 是用来做定位的,定位我的网站在哪个目录下

root 指的是网站所在目录,叫根目录,在配置文件写的什么,网站就得放在那,这个目录可以自己随意定义。

index 指主页的名字叫什么   index.html  index.html  这两个是或的意思

error_page  错误页面,本身是注释,它也可以改,一般用默认就行

再做一个虚拟主机,要把default.conf里的server全部复制到第一个配置文件的下面。

全选:按esc后,然后ggvG或者ggVG
全部复制:yy或者按esc后,然后ggyG

 复制之后按G 光标移动到最后一行再按回车多几个空行分隔,最后按p粘贴。

 复制完毕之后,进行修改。

域名修改为web2.server.com。

存储网站的目录改为web2。但这个目录不存在,防止忘了它,顺手开个终端,创建web2目录

[root@localhost conf.d]# mkdir /usr/share/nginx/web2

 :wq!保存

cd到web2目录下,创建一个主页

<html>
    <meta charset="utf-8">
    <title>
         自建页面
    </title>
    <h1>
       <center>我是页面标题</center>
    </h1>
    <hr>
    <body background=>
      <center>"我是页面内容"</center>
    </body>
</html>

[root@localhost web2]# systemctl stop firewalld    关闭防火墙
[root@localhost web2]# setenforce 0       关闭selinux
[root@localhost web2]# systemctl restart nginx   重启服务

重启服务就可以拿域名访问了,作为客户端应该有网站的解析,没有解析访问不了。可以拿另外一台机器当客户端。

vim /etc/hosts 

 都是同一个IP地址,端口也一样就是域名不一样,先确保能ping通 ping  192.168.22.142

然后就可以在centos里拿浏览器访问了

测试

web1.server.com

web2.server.com

 

基于ip的虚拟主机

同样也是复制server,域名是同一个域名,在80端口前面加了不同的ip。就这里和基于域名虚拟主机不一样,访问的时候访问ip。这种适用于内网,不适用于外网。(用的比较少)

 基于端口的虚拟主机

域名还是同样的域名,就是端口变了,访问网站的时候加个端口。(这个用的也不多)

 

 修改完配置文件之后,重启nginx

[root@localhost conf.d]# systemctl restart nginx

去测试

 测试

浏览器输入:http://web1.server.com

浏览器输入:http://web.server.com:8080


版权声明:本文为weixin_53150440原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。