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

相关推荐
天空属于哈夫克32 天前
企业微信二次开发:精准实现关键词自动回复
架构·企业微信
未济2 天前
linux 配置环境变量
linux
傲世仙尊2 天前
目录即文件-Ext文件系统收尾篇
linux·c语言
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
还是大剑师兰特2 天前
解决nginx错误:http://localhost:7000正常,http://localhost:7000/map 报错404
nginx·大剑师
晨米酱2 天前
AGENTS.md:Agent 的上下文策略层
面试·架构·agent
这个DBA有点耶2 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
_艾伦 耶格尔.2 天前
进程间通信
linux
AI职业加油站2 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
Liuqy-052 天前
Linux IO编程——静态库、动态库
linux