Nginx虚拟主机应用
Nginx支持的虚拟主机有三种
- 基于域名的虚拟主机.
- 基于IP的虚拟主机
- 基于端口的虚拟主机
通过"server{}"配置段实现
-
本篇实验接着上一篇搭建Nginx服务继续搭建,前面Nginx的编译安装不在介绍
基于域名的虚拟主机
[root@localhost nginx-1.12.2]# mkdir -p /var/www/html/accp //递归创建accp网页站点目录 [root@localhost nginx-1.12.2]# mkdir -p /var/www/html/kgc //递归创建kgc网页站点目录 [root@localhost nginx-1.12.2]# cd /var/www/html/ //进入站点目录 [root@localhost html]# ls //查看 accp kgc [root@localhost html]# echo "this is kgc web" > kgc/index.html //创建站点文件 [root@localhost html]# echo "this is accp web" > accp/index.html //创建站点文件 [root@localhost html]# ls accp/ //查看accp站点目录 index.html [root@localhost html]# ls kgc/ //查看kgc站点目录 index.html [root@localhost conf]# vim /etc/named.rfc1912.zones //编辑DNS服务区域配置文件 ...//省略部分内容... zone "kgc.com" IN { type master; file "kgc.com.zone"; allow-update { none; }; }; zone "accp.com" IN { type master; file "accp.com.zone"; //添加accp网页域名解析 allow-update { none; }; }; ...//省略部分内容... :wq [root@localhost conf]# cd /var/named/ [root@localhost named]# cp -p named.localhost kgc.com.zone //复制区域数据文件 [root@localhost named]# vim kgc.com.zone //编辑kgc区域数据文件 $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum NS @ A 127.0.0.1 www IN A 192.168.144.133 :wq [root@localhost named]# cp -p kgc.com.zone accp.com.zone //复制kgc区域数据文件保持权限不变,复制为accp区域数据文件 [root@localhost named]# systemctl restart named //重启DNS服务 [root@localhost init.d]# cd /usr/local/nginx/conf/ [root@localhost conf]# vim nginx.conf //编辑Nginx主配置文件 ...//省略部分内容... server { listen 80; server_name www.kgc.com; //设置kgc域名访问条目 charset utf-8; //更改字符串类型 access_log logs/www.kgc.com.access.log; //更改日志文件名称 location / { root /var/www/html/kgc; //更改站点位置 index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } server { listen 80; server_name www.accp.com; charset utf-8; access_log logs/www.accp.com.access.log; location / { root /var/www/html/accp; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } } ...//省略部分内容... :wq [root@localhost conf]# nginx -t //检测语法 nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful [root@localhost conf]# service nginx restart //重启服务 [root@localhost conf]# systemctl restart named //重启DNS服务
- 在客户机中测试网页
基于端口的虚拟主机
[root@localhost conf]# vim nginx.conf //编辑Nginx主配置文件
...//省略部分内容...
# server {
# listen 80;
# server_name www.kgc.com;
# charset utf-8;
# access_log logs/www.kgc.com.access.log;
# location / {
# root /var/www/html/kgc; //注释掉此部分内容
# index index.html index.htm;
# }
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root html;
# }
# }
server {
listen 192.168.144.133:80; //端口条目钱添加IP地址
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp.com.access.log;
location / {
root /var/www/html/accp;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server { //复制上面部分的内容
listen 192.168.144.133:8080; //设置相同IP监听不同端口
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp8080.com.access.log; //更改日志文件名称
location / {
root /var/www/html/accp8080; //整改站点文件目录名称
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
...//省略部分内容...
:wq
[root@localhost conf]# cd /var/www/html/ //进入站点目录
[root@localhost html]# mkdir accp8080 //创建目录
[root@localhost html]# echo "this is accp8080 web" > accp8080/index.html //编辑网页内容
[root@localhost html]# cd /usr/local/nginx/conf/
[root@localhost conf]# nginx -t //检测语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# service nginx restart //重启服务
[root@localhost conf]# netstat -ntap | grep 80 //查看端口
tcp 0 0 192.168.144.133:8080 0.0.0.0:* LISTEN 11967/nginx: master
tcp 0 0 192.168.144.133:80 0.0.0.0:* LISTEN 11967/nginx:
- 在客户机中访问测试
基于不同IP的虚拟主机
- 首先给Linux虚拟机添加网卡
[root@localhost conf]# ifconfig //查看新添加的网卡信息,并记录IP地址
ens33: flags=4163 mtu 1500
inet 192.168.144.133 netmask 255.255.255.0 broadcast 192.168.144.255
inet6 fe80::a85a:c203:e2e:3f3c prefixlen 64 scopeid 0x20
ether 00:0c:29:5b:d3:a0 txqueuelen 1000 (Ethernet)
RX packets 67362 bytes 72060261 (68.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 16836 bytes 1825469 (1.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens36: flags=4163 mtu 1500
inet 192.168.144.145 netmask 255.255.255.0 broadcast 192.168.144.255
inet6 fe80::deb1:3cec:3e26:5ec2 prefixlen 64 scopeid 0x20
ether 00:0c:29:5b:d3:aa txqueuelen 1000 (Ethernet)
RX packets 6 bytes 926 (926.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 27 bytes 4513 (4.4 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost conf]# vim /var/named/kgc.com.zon //更改DNS区域数据文件中kgc网页解析的IP地址
$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
www IN A 192.168.144.145 //更改为新添加网卡的IP地址
:wq
[root@localhost conf]# vim nginx.conf //编辑主配置文件
...//省略部分内容...
server {
listen 192.168.144.145:80; //去掉上面配置基于端口时全面添加的注释,并添加监听的IP地址
server_name www.kgc.com;
charset utf-8;
access_log logs/www.kgc.com.access.log;
location / {
root /var/www/html/kgc;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
server {
listen 192.168.144.133:80;
server_name www.accp.com;
charset utf-8;
access_log logs/www.accp.com.access.log; //保持不变
location / {
root /var/www/html/accp;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
# server {
# listen 192.168.144.133:8080;
# server_name www.accp.com;
# charset utf-8;
# access_log logs/www.accp8080.com.access.log; //注释掉此部分内容
# location / {
# root /var/www/html/accp8080;
# index index.html index.htm;
# }
# error_page 500 502 503 504 /50x.html;
# location = /50x.html {
# root html;
# }
# }
...//省略部分内容...
:wq
[root@localhost conf]# nginx -t //检测语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost conf]# service nginx restart //重启服务
[root@localhost conf]# systemctl restart named //重启DNS服务
- 在客户机中访问测试(此处建议新开启一台客户机做访问测试)