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

相关推荐
上海云盾-小余4 小时前
流量攻击复盘:为什么 WAF 完好,业务依旧瘫痪
运维·服务器·网络
IT大白鼠4 小时前
Docker 私有仓库管理:Harbor 企业级仓库搭建与镜像全生命周期管理
运维·docker·容器
戴西软件4 小时前
戴西iDWS.3DViz Suite数据轻量化可视化软件,从传统桌面软件向云端协同的重大突破
大数据·运维·网络·人工智能·机器学习·3d
闲云野鹤在人间5 小时前
OpenStack架构介绍和安装流程
linux·网络·架构·openstack
这个DBA有点耶5 小时前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
我命由我123455 小时前
Linux - Linux/POSIX 路径斜杠折叠规则
linux·运维·服务器·android studio·android jetpack·android-studio·android runtime
姚不倒6 小时前
Nginx 反向代理:5 种负载均衡策略与实战
运维·nginx·负载均衡
我是大AI6 小时前
实战解析:基于多源交叉验证的AI幻觉治理架构与GEO行业解决方
人工智能·架构
xx~t6 小时前
嵌入式——Linux软件编程——网络1
linux·c语言·网络·vscode·网络协议
yangdaxiageo6 小时前
AI搜索广告的商业化底座:GEO技术架构的三层模型详解
人工智能·架构