Day50-Nginx虚拟主机知识与企业级实战
- [1. 什么是虚拟主机?](#1. 什么是虚拟主机?)
- 2.为什么要用虚拟主机?
- [3. 虚拟机主机分类:](#3. 虚拟机主机分类:)
- 4.基于域名的虚拟主机配置实战
- 5.基于端口的虚拟主机配置实战
- 6.基于【IP】的虚拟主机实战
- 7.客户端访问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. 虚拟机主机分类:
- 基于【域名】的虚拟主机(*)
以不同的多个域名区分不同的虚拟主机,放在一个nginx服务上,还能够让用户有序访问。
生产用途:企业提供正常网站服务。 - 基于【端口】的虚拟主机
以不同的端口,来区分多个虚拟主机,肯定也是放在一个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