虚拟主机(Nginx)

主机IP:192.168.11.100

1. 域名模拟(为了方便测试)

修改hosts文件

  1. vim /etc/hosts
  2. 192.168.11.100 www.web01.cn web01.cn
  3. 192.168.11.100 www.web02.cn web02.cn

2. 配置基于域名的虚拟主机

  1. # 安装Nginx
  2. dnf install nginx -y
  3. # 建立测试页面
  4. mkdir /wwwroot/{web01,web01} -p
  5. echo '<h1>Web01</h1>' /wwwroot/web01/index.html
  6. echo '<h1>Web02</h1>' /wwwroot/web02/index.html
  7. # 开启服务
  8. systemctl enable --now nginx
  9. # 防火墙放行
  10. firewall-cmd --add-service=http --permanent
  11. firewall-cmd --reload
  12. # selinux
  13. semanage fcontext -a -t httpd_sys_content_t '/wwwroot(/.*)?'
  14. restorecon -Rv /wwwroot/
  15. # 访问测试
  16. curl www.web01.cn
  17. # 配置虚拟主机配置文件
  18. vim /etc/nginx/conf.d/web01.conf
  19. # 内容
  20. server {
  21. listen 80;
  22. server_name www.web01.cn;
  23. location / {
  24. root /wwwroot/web01;
  25. }
  26. }
  27. vim /etc/nginx/conf.d/web01.conf
  28. # 内容
  29. server {
  30. listen 80;
  31. server_name www.web02.cn;
  32. location / {
  33. root /wwwroot/web02;
  34. }
  35. }
  36. # 测试nginx配置文件
  37. nginx -t
  38. # 重载nginx
  39. systemctl reload nginx
  40. # 访问测试
  41. curl www.web01.cn
  42. 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