一.构建虚拟主机概述
- 利用虚拟主机,不用为每个运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程,虚拟主机提供了在同一台服务器、同一组Nginx进程上运行的多个网站的功能
- 与Apache相同,Nginx也可以配置多种类型的虚拟主机,分别是基于域名、基于端口、基于IP地址的虚拟主机
- 使用Nginx搭建虚拟主机服务器时,每个虚拟web站点拥有独立的“server {}”配置段,各自监听的IP地址、端口号段单独指定。
二.基于域名的虚拟主机
- 安装DNS服务
#配置DNS服务器
yum install bind -y
#配置文件
vim /etc/named.conf //修改主配置文件,修改监听地址
vim /etc/named.rfc1912.zones //修改区域配置文件
zone "kgc.com" IN {
type master;
file "kgc.com.zone";
allow-update { none; };
};
zone "accp.com" IN {
type master;
file "accp.com.zone";
allow-update { none; };
};
cd /var/named
cp -p named.localhost kgc.com.zone
vim kgc.com.zone //修改区域数据配置,进行正向解析
cp -p kgc.com.zone accp.com.zone
#关闭防火墙,开启服务
systemctl stop firewalld
setenforce 0
systemctl start named
- 测试DNS服务
#修改测试机的DNS服务器的IP地址
echo "nameserver 192.168.43.211" >> /etc/resolv.conf
注:当用windows系统作为测试机时,可以c盘的\Windows\System32\drivers\etc\hosts,添加
192.168.43.211 www.kgc.com www.accp.com
- 安装Nginx服务
yum install vsftpd -y //安装ftp服务
systemctl start vsftpd //开启ftp服务
#使用wget工具从官网上下载nginx压缩包
wget http://nginx.org/download/nginx-1.17.6.tar.gz
#解压
tar zxvf nginx-1.12.2.tar.gz
#安装环境包
yum install gcc gcc-c++ pcre* zlib-devel make -y
#创建用户,不建立宿主文件,且不能再shell上登录
useradd -M -s /sbin/nologin nginx
#配置,安装且编译
cd nginx-1.12.2/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module
#nigix运行的用户和组都为nginx
#启用http_stub_status_module模块以支持状态统计,便于查看服务器的连接信息
make && make install
#优化服务控制,systemctl工具
vim /lib/systemd/system/nginx.service
[Unit]
Dsecription=nginx //描述
After=network.target //描述服务类别
[Service]
Type=forking //后台运行形式
PIDFile=/usr/local/nginx/logs/nginx.pid //PID文件位置
ExecStart=/usr/local/nginx/sbin/nginx //启动服务
ExecReload=/usr/bin/kill -s HUP $MAINPID //根据PID重载
ExecStop=/usr/bin/kill -s QUIT $MAINPID //根据PID关闭
PrivateTmp=true
[Install]
WantedBy=multi-user.target
#添加执行权限
chmod 755 /lib/systemd/system/nginx.service
- 基于域名构建虚拟主机
#配置nginx的主配置文件
vim /usr/local/nginx/conf/nginx.conf
server {
server_name www.kgc.com;
location / {
root /var/www/kgc;
index index.html;
}
}
server {
server_name www.accp.com;
location / {
root /var/www/accp;
index index.html;
}
}
#创建主页面文件
cd /var
mkdir -p www/kgc www/accp
cd /var/www
echo "<h1>KGC</h1>" > kgc/index.html
echo "<h1>ACCP</h1>" > accp/index.html
#重启服务
systemctl restart nginx.service
- 测试服务结果
三.基于端口的虚拟主机
- 基于端口的虚拟主机和基于域名配置基本一样,区别在于,Nginx的主配置文件中,修改server{}参数
#基于域名的基础上在主配置文件上加入下列配置
vim /usr/local/nginx/conf/nginx.conf
server {
listen 192.168.43.211:80;
server_name 192.168.43.211:80;
location / {
root /var/www/kgc;
index index.html;
}
}
server {
listen 192.168.43.211:8080;
server_name 192.168.43.211:8080;
location / {
root /var/www/accp;
index index.html;
}
}
- 重启服务,查看端口
[root@192 nginx]# systemctl restart nginx.service
[root@192 nginx]# netstat -natp | grep nginx
tcp 0 0 192.168.43.211:8080 0.0.0.0:* LISTEN 38236/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 38236/nginx: master
[root@192 nginx]#
- 验证服务
四.基于IP地址的虚拟主机
- 增加双网卡
- #基于域名的站点配置基础上在主配置文件上加入下列配置
vim /usr/local/nginx/conf/nginx.conf
server {
listen 192.168.43.200:80;
server_name 192.168.43.200:80;
location / {
root /var/www/kgc;
index index.html;
}
}
server {
listen 192.168.43.211:80;
server_name 192.168.43.211:80;
location / {
root /var/www/accp;
index index.html;
}
}
- 重启服务
[root@192 nginx]# systemctl restart nginx.service
- 验证服务