Day50-Nginx虚拟主机知识与企业级实战

Day50-Nginx虚拟主机知识与企业级实战

nginx虚拟主机分类介绍
nginx虚拟主机企业级实践
客户端访问nginx虚拟主机的原理流程

1. 什么是虚拟主机?

虚拟主机概念:

所谓一个虚拟主机,在Web服务里就是一个独立的网站站点,这个站点对应独立的域名(也可能是IP或端口),具有独立的程序及资源目录,可以独立地对外提供服务供用户访问。

一台服务器里,或者一个nginx里怎么能提供这么多域名服务呢?

首页:一套集群

www.jd.com

二级页:一套集群

diannao.jd.com
channel.jd.com

内容页:一套集群

https://item.jd.com/50760357152.html

订单页:一套集群

支付页:一套集群

物流跟踪:一套集群

评价页面:一套集群

#apache虚拟主机包含在<VirtualHost></VirtualHost>内,

#而Nginx软件则使用一个server{ }标签来标示一个虚拟主机。

2.为什么要用虚拟主机?

a.一个nginx主进程,指定一个配置文件,配置文件里有多个虚拟主机。

​b.如果不用虚拟主机,那么,一个diannao.jd.com就要对应一个服务器,浪费。

​c.多实例:多个nginx主进程,每个nginx进程,指定不同的配置文件(目录、代码、域名也不同)

3. 虚拟机主机分类:

  1. 基于【域名】的虚拟主机(*)
    以不同的多个域名区分不同的虚拟主机,放在一个nginx服务上,还能够让用户有序访问。
    生产用途:企业提供正常网站服务。
  2. 基于【端口】的虚拟主机
    以不同的端口,来区分多个虚拟主机,肯定也是放在一个nginx服务上,还能够让用户有序访问。
    生产用途:
    1)不对外提供访问的服务,网站的后台,测试环境
    2)各种应用,API接口(10.0.0.7:8091)
    3)所有网站也用特殊端口,前端有负载均衡(80),负载均衡下面的节点是什么端口无所谓。
    http://www.oldboyedu.com/admin/ ###有安全风险
    好的思路:后台单独用开启web服务器
    1)不做域名解析,
    2)不用80端口。
    3)不配公网IP。
    4)VPN拨号,内网访问。

4.基于域名的虚拟主机配置实战

实践的机器环境

web02:10.0.0.8 编译方式nginx

配置3个域名

bash 复制代码
www.etiantian.org
blog.etiantian.org
bbs.etiantian.org

1)配置主配置文件

bash 复制代码
[root@web02 ~]# cd /application/nginx/conf
[root@web02 conf]# cat nginx.conf
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    include /application/nginx/conf/extra/*.conf;
}

2)配置虚拟主机路径及配置文件

bash 复制代码
[root@web02 conf]# mkdir extra/
[root@web02 conf]# cd extra/

[root@web02 extra]# cat 01_www.etiantian.org.conf 
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
[root@web02 extra]# cat 02_blog.etiantian.org.conf 
    server {
        listen       80;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    }
[root@web02 extra]# cat 03_bbs.etiantian.org.conf 
    server {
        listen       80;
        server_name  bbs.etiantian.org;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
    }

3)创建虚拟主机站点目录

bash 复制代码
[root@web02 extra]# cd ../../html/
[root@web02 html]# mkdir www blog bbs
[root@web02 html]# echo "www" >www/index.html
[root@web02 html]# echo "blog" >blog/index.html
[root@web02 html]# echo "bbs" >bbs/index.html
[root@web02 html]# cat www/index.html 
www

4)检查语法重启服务

bash 复制代码
[root@web02 ~]# nginx -t
[root@web02 ~]# nginx -s reload

5)配置Linux hosts并访问

bash 复制代码
[root@web02 ~]# tail -1 /etc/hosts
10.0.0.8 www.etiantian.org blog.etiantian.org bbs.etiantian.org
[root@web02 html]# curl www.etiantian.org
www
[root@web02 html]# curl blog.etiantian.org
blog
[root@web02 html]# curl bbs.etiantian.org
bbs

6)配置windows hosts并访问

bash 复制代码
在windows下通过浏览器使用域名访问,配置Hosts局域网域名解析。
Windows10:###以管理员身份打开(有必要可以这么做)
	创建文件不带后缀hosts ,填写对应的解析信息,然后覆盖 C:\Windows\System32\drivers\etc\hosts

hosts文件里的内容:
10.0.0.8 www.etiantian.org blog.etiantian.org bbs.etiantian.org

浏览器分别访问不同域名。

5.基于端口的虚拟主机配置实战

1)配置虚拟主机

bash 复制代码
[root@web02 extra]# cat 01_www.etiantian.org.conf 
    server {
        listen       80;
        server_name  www.etiantian.org;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
[root@web02 extra]# cat 02_blog.etiantian.org.conf 
    server {
        listen       81;
        server_name  blog.etiantian.org;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    }
[root@web02 extra]# cat 03_bbs.etiantian.org.conf 
    server {
        listen       82;
        server_name  bbs.etiantian.org;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
    }

2.检查语法并重启

bash 复制代码
nginx -t 
nginx -s reload

3.检查

bash 复制代码
[root@web02 extra]# curl 10.0.0.8:80
www
[root@web02 extra]# curl 10.0.0.8:81
blog
[root@web02 extra]# curl 10.0.0.8:82
bbs
[root@web02 extra]# curl www.etiantian.org:80
www
[root@web02 extra]# curl blog.etiantian.org:81
blog
[root@web02 extra]# curl bbs.etiantian.org:82
bbs
[root@web02 extra]# curl bbs.etiantian.org       #端口不对
www

6.基于【IP】的虚拟主机实战

1.配置多个IP

bash 复制代码
ifconfig  #别名IP
ip        #辅助IP
#######
[root@web02 extra]# ifconfig eth0:9 10.0.0.9/24 up
[root@web02 extra]# ifconfig eth0:9
eth0:9: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.0.9  netmask 255.255.255.0  broadcast 10.0.0.255
        ether 00:0c:29:77:15:92  txqueuelen 1000  (Ethernet)
[root@web02 extra]# ip addr add 172.16.1.9/24 dev eth1 lable eth1:9
[root@web02 extra]# ifconfig eth0:10 10.0.0.10/24 up

2.配置虚拟主机文件

bash 复制代码
[root@web02 extra]# cat 01_www.etiantian.org.conf 
    server {
        listen       10.0.0.9:80;
        server_name  10.0.0.9;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
    }
[root@web02 extra]# cat 02_blog.etiantian.org.conf 
    server {
        listen       10.0.0.10:80;
        server_name  10.0.0.10;
        location / {
            root   html/blog;
            index  index.html index.htm;
        }
    }
[root@web02 extra]# cat 03_bbs.etiantian.org.conf 
    server {
        listen       172.16.1.9:80;
        server_name  172.16.1.9;
        location / {
            root   html/bbs;
            index  index.html index.htm;
        }
    }

3.检查语法并重启

bash 复制代码
[root@web02 extra]# nginx -t 
[root@web02 extra]# pkill nginx
[root@web02 extra]# lsof -i :80

[root@web02 extra]# nginx
[root@web02 extra]# lsof -i :80

4.检查

bash 复制代码
[root@web02 extra]# curl 172.16.1.9
bbs
[root@web02 extra]# curl 10.0.0.10
blog
[root@web02 extra]# curl 10.0.0.9
www	 

5.检查内网172,需要打开虚拟网络编辑器映射

bash 复制代码
192.168.14.251:8090===>172.16.1.9:80

7.客户端访问nginx虚拟主机的原理流程(未完)

相关推荐
小宋102140 分钟前
玩转RabbitMQ声明队列交换机、消息转换器
服务器·分布式·rabbitmq
m0_6090004243 分钟前
向日葵好用吗?4款稳定的远程控制软件推荐。
运维·服务器·网络·人工智能·远程工作
小安运维日记2 小时前
Linux云计算 |【第四阶段】NOSQL-DAY1
linux·运维·redis·sql·云计算·nosql
kejijianwen3 小时前
JdbcTemplate常用方法一览AG网页参数绑定与数据寻址实操
服务器·数据库·oracle
CoolTiger、5 小时前
【Vmware16安装教程】
linux·虚拟机·vmware16
m0_741768855 小时前
使用docker的小例子
运维·docker·容器
学习3人组6 小时前
CentOS 中配置 OpenJDK以及多版本管理
linux·运维·centos
厨 神6 小时前
vmware中的ubuntu系统扩容分区
linux·运维·ubuntu
Karoku0666 小时前
【网站架构部署与优化】web服务与http协议
linux·运维·服务器·数据库·http·架构
geek_Chen016 小时前
虚拟机共享文件夹开启后mnt/hgfs/下无sharefiles? --已解决
linux·运维·服务器