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

相关推荐
muls14 分钟前
java面试宝典
java·linux·服务器·网络·算法·操作系统
斯班奇的好朋友阿法法8 分钟前
ollama离线导入大模型
服务器·前端·javascript
图扑可视化8 分钟前
油气集输 WebGIS 数字孪生管控大屏
运维·gis·数字孪生·油气运输·油气集输
Eric.Lee202122 分钟前
python实现pdf转图片png
linux·python·pdf
CDN36023 分钟前
CDN 无法播放音视频?流媒体回源与 Range 配置修复
运维·音视频
剑锋所指,所向披靡!27 分钟前
linux的目录结构
linux·运维·服务器
zt1985q29 分钟前
本地部署 Home Assistant 高级自动化 AppDaemon 并实现外部访问
运维·服务器·网络·网络协议·自动化
志栋智能31 分钟前
轻量级部署:低成本实现混合云环境自动化巡检
运维·网络·人工智能·自动化
我爱学习好爱好爱32 分钟前
Ansible变量介绍 vars变量 inventory针对主机设置变量
linux·自动化·ansible
全栈若城39 分钟前
HarmonyOS6 半年磨一剑 - RcInput 组件清空、密码切换与图标交互机制
架构·交互·harmonyos6·三方库开发实战·rchoui·三方库开发