Nginx03 虚拟主机

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

1 虚拟主机

  虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW、FTP、Email等)功能,虚拟主机之间完全独立,并可由用户自行管理,在外界看来,每一台虚拟主机和一台独立的主机完全一样。

  虚拟主机是为了在同一台物理机器上运行多个不同的网站,提高资源利用率引入的技术。

  一般的web服务器一个ip地址的80端口只能正确对应一个网站。web服务器在不使用多个ip地址和端口的情况下,如果需要支持多个相对独立的网站就需要一种机制来分辨同一个ip地址上的不同网站的请求,这就出现了主机头绑定的方法。

  简单的说就是,将不同的网站空间对应不同的域名,以连接请求中的域名字段来分发和应答正确的对应空间的文件执行结果。

  举个例子来说,一台服务器ip地址为192.168.8.101,有两个域名和对应的空间在这台服务器上,使用的都是192.168.8.101的80端口来提供服务。如果只是简单的将两个域名A和B的域名记录解析到这个ip地址,那么web服务器在收到任何请求时反馈的都会是同一个网站的信息,这显然达不到要求。接下来我们使用主机头绑定域名A和B到他们对应的空间文件夹C和D。当含有域名A的web请求信息到达192.168.8.101时,web服务器将执行它对应的空间C中的首页文件,并返回给客户端,含有域名B的web请求信息同理,web服务器将执行它对应的空间D中的首页文件,并返回给客户端,所以在使用主机头绑定功能后就不能使用ip地址访问其上的任何网站了,因为请求信息中不存在域名信息,就会出错

2 域名、dns、ip地址的关系

  域名是相对网站来说的,IP是相对网络来说的。当输入一个域名的时候,网页是如何做出反应的?
  输入域名---->域名解析服务器(dns)解析成ip地址—>访问IP地址—>完成访问的内容—>返回信息。

  一个ip地址可以对应很多个域名
  dns详细介绍:ttps://www.cnblogs.com/jthr/p/15890325.html

3 实例

3.1 配置多个server

  修改nginx.cfg文件

  下面配置了三个server 

  nginx1.com:访问到了是mynginx/nginx1下面的资源
  nginx2.com:访问到了是mynginx/nginx2下面的资源
  nginx3.com:访问到了是mynginx/nginx3下面的资源
worker_processes  1;

events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on; keepalive_timeout 65; server {
listen 80;
server_name nginx1.com; location / {
root /usr/local/mynginx/nginx1; #这里采用的是绝对路径也可以采用相抵路径,相对路径是相对于nginx的安装目录
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} } server {
listen 80;
server_name nginx2.com; location / {
root /usr/local/mynginx/nginx2;
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} } server {
listen 80;
server_name nginx3.com; location / {
root /usr/local/mynginx/nginx3;
index index.html index.htm;
} error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
} } }

3.2 创建mynginx及下面的文件夹和资源

1)创建mynginx文件夹

2)创建nginx1文件夹

  

3)在nginx1创建index.heml

输入内容:nginx1

4)创建nginx2和nginx3文件夹及下面的index文件,index的内容分别为nginx2和nginx3

3.3 重新加载nginx使配置生效

systemctl reload nginx

3.4 配置本级的映射

  此时直接通过域名访问是访问不到的。因为我们这里的域名不是真正的域名,没有和nginx所在服务器的ip绑定。

  所以,我们需要做一个本地映射

  找到计算机的host文件

  

  加如下上配置,这样子,我们在计算机上访问nginx1.com就会被映射到192.168.28.110,也就是nginx所在服务器的ip

#本地域名映射nginx
192.168.28.110 nginx1.com
192.168.28.110 nginx2.com
192.168.28.110 nginx3.com

3.5 访问

  注意可能存在缓存影响

 

4 配置server中server_name 的规则

  server中可以配置多个域名

4.1 完整匹配

server_name  test81.xzj520520.cn  test82.xzj520520.cn;

4.2 通配符匹配

server_name  *.xzj520520.cn;

需要注意的是精确匹配的优先级大于通配符匹配和正则匹配

4.3 正则匹配

 https://www.cnblogs.com/jthr/p/11903710.html

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: nginx