Py008-10-05虚拟主机

虚拟主机

  • 一个web服务器器软件默认情况下只能发布⼀一个web,因为⼀个web分享出去需要三个条件(IP、Port、Domain name)
  • 一个web服务器器软件如何发布多个web呢?
  • 虚拟主机:就是把一台物理理服务器器划分成多个“虚拟”的服务器器,每一个虚拟主机都可以有独⽴立的域名和独⽴立的⽬目录

同时发布两个网站

  • DocumentRoot /usr/local/nginx/html/web1
  • DocumentRoot /usr/local/nginx/html/web2

基于IP的虚拟主机

  • 两个ip
  • 两个DR(document root)
  • 索引页面 index.html 用来区分 两个ip
1
2
3
4
5
6
7
8
9
10
11
12
13
14
server {
listen 192.168.10.42:80;
location / {
root html/web1;
index index.html index.htm index.php;
}
}
server {
listen 192.168.10.52:80;
location / {
root html/web2;
index index.html index.htm;
}
}

备份你的 nginx.conf

1
2
3
4
5
6
7
8
cd /usr/local/nginx/conf
cp nginx.conf nginx.conf1
#新生成一个 配置文件 用系统默认的
cp nginx.conf.default nginx.conf

# 删除 配置里无用的注释 和空行
sed -i "/#/d" nginx.conf
sed -i "/^$/d" nginx.conf

修改配置文件如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
worker_processes  1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;

server {
listen 110.90.10.30:80;
# server_name localhost;
location / {
root html/web1;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 110.90.10.50:80;
# server_name localhost;
location / {
root html/web2;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}
  • 110.90.10.30; 是我瞎写的一个 ip代表你买的服务器分配的ip
  • 110.90.10.50; 代表你开启
1
2
3
4
5
6
7
# 通过 ifconfig查看你的ip 就是 inet后面的
如 110.90.10.30

# 添加子网卡
ifconfig ens33:1 110.90.10.50/24 up

# 查看是否生成子网卡 ifconfig

新建根目录 index.html

1
2
3
4
mkdir /usr/local/nginx/html/web1
mkdir /usr/local/nginx/html/web2
echo web001 > /usr/local/nginx/html/web1/index.html
echo web002 > /usr/local/nginx/html/web2/index.html

查看是否启动

1
2
3
4
5
6
7
8
9
10
11
12
13
killall nginx
/usr/local/nginx/sbin/nginx

# 查看是否启动
netstat -ntpl

# 检查是否有内容
elinks http://110.90.10.30 --dump
elinks http://110.90.10.50 --dump


# 关闭子网卡
ifconfig ens33:1 down

基于端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;
# server_name localhost;
location / {
root html/web1;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 8080;
# server_name localhost;
location / {
root html/web2;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

IP和端口的区别

每个网站都需要一个IP

缺点:需要多个IP ,如果是公网IP 每个都要花钱

基于端口的

  • 只需要一个IP

缺点:端口你是无法告诉公网用户的,无法适用于公网用户 或者内部用户

如:某些网站就是 频繁的更换端口和IP 注意!违法的事咱不干

基于域名的虚拟主机

  • 域名是需要花钱的
  • 但是你本地可以手动改host
1
2
3
4
5
6
7
# 编辑你的hosts文件
vi /etc/hosts
你的IP www.abc.com
你的IP www.ccc.com

45.77.47.0 www.abc.com
45.77.47.0 www.ccc.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
server {
listen 80;
server_name www.abc.com;
location / {
root html/web1;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 80;
server_name www.ccc.com;
location / {
root html/web2;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

查看是否成功

1
2
3
elinks http://www.abc.com --dump

elinks http://www.ccc.com --dump