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虚拟主机的原理流程(未完)

相关推荐
长弓聊编程14 分钟前
Linux系统使用valgrind分析C++程序内存资源使用情况
linux·c++
cherub.21 分钟前
深入解析信号量:定义与环形队列生产消费模型剖析
linux·c++
梅见十柒44 分钟前
wsl2中kali linux下的docker使用教程(教程总结)
linux·经验分享·docker·云原生
Koi慢热1 小时前
路由基础(全)
linux·网络·网络协议·安全
传而习乎1 小时前
Linux:CentOS 7 解压 7zip 压缩的文件
linux·运维·centos
soulteary1 小时前
突破内存限制:Mac Mini M2 服务器化实践指南
运维·服务器·redis·macos·arm·pika
天天扭码1 小时前
五天SpringCloud计划——DAY2之单体架构和微服务架构的选择和转换原则
java·spring cloud·微服务·架构
我们的五年1 小时前
【Linux课程学习】:进程程序替换,execl,execv,execlp,execvp,execve,execle,execvpe函数
linux·c++·学习
爱吃青椒不爱吃西红柿‍️1 小时前
华为ASP与CSP是什么?
服务器·前端·数据库