在 Linux 环境下搭建 OpenLab Web 网站并实现 HTTPS 和访问控制

实验要求

综合练习:请给openlab搭建web网站

​ 网站需求:

​ 1.基于域名www.openlab.com(http://www.openlab.com)可以访问网站内容为 welcome to openlab!!!

​ 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student(http://www.openlab.com/student) 网站访问学生信息,www.openlab.com/data(http://www.openlab.com/data)网站访问教学资料

www.openlab.com/money网站访问缴费网站(http://www.openlab.com/money网站访问缴费网站)。

​ 3.要求

​ (1)学生信息网站只有song和tian两人可以访问,其他用户不能访问。

​ (2)访问缴费网站实现数据加密基于https访问。

注意点

在 Nginx 中,默认的 Web 根目录是 /usr/share/nginx/html

  • /usr/share/nginx/html/index.html:欢迎页面。
  • /usr/share/nginx/html/student.html:学生信息页面。
  • /usr/share/nginx/html/data.html:教学资料页面。
  • /usr/share/nginx/html/money.html:缴费页面。

实验过程

复制代码
[root@node ~]# yum install nginx -y
[root@node ~]# systemctl start nginx
[root@node ~]# systemctl enable nginx
[root@node ~]# cd /etc/nginx/
[root@node nginx]# tree
.
├── conf.d
├── default.d
├── fastcgi.conf
├── fastcgi.conf.default
├── fastcgi_params
├── fastcgi_params.default
├── koi-utf
├── koi-win
├── mime.types
├── mime.types.default
├── nginx.conf
├── nginx.conf.default
├── scgi_params
├── scgi_params.default
├── uwsgi_params
├── uwsgi_params.default
└── win-utf

2 directories, 15 files
[root@node nginx]# cd /usr/share/nginx/html
[root@node html]# vim index.html 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Welcome to OpenLab!</title>
</head>
<body>
    <h1>Welcome to OpenLab!!!</h1>
</body>
</html>


[root@node html]# vim data.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Teaching Materials</title>
</head>
<body>
    <h1>Teaching Materials</h1>
    <p>Resources and notes for the course.</p>
</body>
</html>


[root@node html]# vim money.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Payment Portal</title>
</head>
<body>
    <h1>Payment Portal</h1>
    <p>Please make your payment here.</p>
</body>
</html>



[root@node html]# yum install httpd-tools -y

[root@node html]# htpasswd -c /etc/nginx/.htpasswd song
New password: 
Re-type new password: 
Adding password for user song
[root@node html]# htpasswd /etc/nginx/.htpasswd tian
New password: 
Re-type new password: 
Adding password for user tian



[root@node ~]# vim /etc/nginx/nginx.conf
pid /var/run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;

    server {
        listen       80;
        server_name  www.openlab.com;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        # 学生信息页面(要求 Basic Auth)
        location /student {
            auth_basic "Restricted Access";  # 显示的提示信息
            auth_basic_user_file /etc/nginx/.htpasswd;  # 指向用户密码文件

            # 其他配置
        }

        # 教学资料页面(对所有用户开放)
        location /data {
            root   /usr/share/nginx/html/data;
            index  index.html index.htm;
        }

        # 缴费页面(强制使用 HTTPS)
        location /money {
            root   /usr/share/nginx/html/money;
            index  index.html index.htm;
            return 301 https://$server_name$request_uri;
        }
    }

    # SSL 配置(可选)
    server {
        listen       443 ssl;
        server_name  www.openlab.com;

        ssl_certificate      /etc/ssl/certs/openlab.crt;
        ssl_certificate_key  /etc/ssl/private/openlab.key;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm;
        }

        # 学生信息页面(要求 Basic Auth)
        location /student {
            auth_basic "Restricted Access";
            auth_basic_user_file /etc/nginx/.htpasswd;
        }

        location /data {
            root   /usr/share/nginx/html/data;
            index  index.html index.htm;
        }

        location /money {
            root   /usr/share/nginx/html/money;
            index  index.html index.htm;
        }
    }
}




[root@node ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

[root@node ~]# systemctl restart nginx


[root@node ~]# vim  /usr/share/nginx/html/index.html



[root@node ~]# vim /etc/hosts[root@node ~]# ping www.openlab.com
PING www.openlab.com (192.168.133.20) 56(84) 字节的数据。
64 字节,来自 www.openlab.com (192.168.133.20): icmp_seq=1 ttl=64 时间=0.028 毫秒
64 字节,来自 www.openlab.com (192.168.133.20): icmp_seq=2 ttl=64 时间=0.031 毫秒
64 字节,来自 www.openlab.com (192.168.133.20): icmp_seq=3 ttl=64 时间=0.028 毫秒

主界面

student

相关推荐
Yana.nice3 小时前
Linux 只保留 30 天内日志(find命令删除日志文件)
linux·运维·chrome
2601_960567966 小时前
电商套图自动化效率的工程量化分析——从逐张生成到批量套图的架构演进
运维·架构·自动化
吳所畏惧7 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
DFT计算杂谈7 小时前
无 Root 权限在 Tesla K80 零门槛部署 DeepSeek 大模型
linux·服务器·网络·数据库·机器学习
HiDev_7 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
Zhang~Ling8 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
DeeplyMind8 小时前
Linux 深入 per-VMA lock:Linux 缺页路径如何摆脱 mmap_lock
linux·per-vma lock
爱写代码的森8 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
中微极客9 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
久曲健的测试窝9 小时前
智能座舱自动化测试落地方案:数字仿真搭配实车实测,解决用例运维与场景失真难题
运维