虚拟主机(Nginx)
主机IP:192.168.11.100
1. 域名模拟(为了方便测试)
修改hosts文件
vim /etc/hosts
192.168.11.100 www.web01.cn web01.cn
192.168.11.100 www.web02.cn web02.cn
2. 配置基于域名的虚拟主机
# 安装Nginx
dnf install nginx -y
# 建立测试页面
mkdir /wwwroot/{web01,web01} -p
echo '<h1>Web01</h1>' /wwwroot/web01/index.html
echo '<h1>Web02</h1>' /wwwroot/web02/index.html
# 开启服务
systemctl enable --now nginx
# 防火墙放行
firewall-cmd --add-service=http --permanent
firewall-cmd --reload
# selinux
semanage fcontext -a -t httpd_sys_content_t '/wwwroot(/.*)?'
restorecon -Rv /wwwroot/
# 访问测试
curl www.web01.cn
# 配置虚拟主机配置文件
vim /etc/nginx/conf.d/web01.conf
# 内容
server {
listen 80;
server_name www.web01.cn;
location / {
root /wwwroot/web01;
}
}
vim /etc/nginx/conf.d/web01.conf
# 内容
server {
listen 80;
server_name www.web02.cn;
location / {
root /wwwroot/web02;
}
}
# 测试nginx配置文件
nginx -t
# 重载nginx
systemctl reload nginx
# 访问测试
curl www.web01.cn
curl www.web02.cn
3. 配置基于端口的虚拟主机
# 新建目录
mkdir /wwwroot/private -p
# 创建访问测试文件
echo '<h1>private</h1>' > /wwwroot/private/index.html
# 编写配置文件
vim /etc/nginx/conf.d/private.conf
# 内容
server {
listen 83;
server_name www.web01.cn
location / {
root /wwwroot/private;
}
}
# 重载nginx
systemctl reload nginx
# 查看监听端口
ss -ltnp
# 防火墙放行
firewall-cmd --add-port=83/tcp --permanent
firewall-cmd --reload
# selinux
semanage port -a -t http_port_t -p tcp 83
# 查看selinux放行端口
semanage port -l
semanage port -l | grep http
# 访问测试
curl www.web01.cn:83
4. 配置身份认证
# 编写配置文件
vim /etc/nginx/conf.d/private.conf
# 内容
server {
listen 83;
server_name www.web01.cn
location / {
root /wwwroot/private;
auth_basic "auth site";
auth_basic_user_file /etc/nginx/.htpasswd;
}
}
# 安装htpasswd工具
dnf provides htpasswd
dnf install httpd-tools -y
# 创建测试用户
htpasswd -c -b /etc/nginx/.htpasswd user01 123
# 测试身份认证
curl www.web01.cn:83
curl www.web01.cn:83 -u user01:123