基于 Nginx 搭建 OpenLab 多场景 Web 网站:从基础配置到 HTTPS 加密全流程

一、需求分析

1.基于域名www.openlab.com可以访问网站内容为 welcome to openlab!!!

2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于

  • www.openlab.com/student 网站访问学生信息
  • www.openlab.com/data网站访问教学资料
  • www.openlab.com/money 网站访问缴费网站

3.要求

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

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

二、环境准备

本次搭建基于openEuler 22.03系统,主要用到的工具包括:

  • Nginx:作为 Web 服务器
  • httpd-tools:提供用户认证工具htpasswd
  • OpenSSL:生成 SSL 证书,实现 HTTPS 加密

三、实现步骤

1.检查防火墙及SELinux是否关闭

首先检查关闭安全软件

[root@master ~]# systemctl status firewalld
○ firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabl>
     Active: inactive (dead)
       Docs: man:firewalld(1)
[root@master ~]# getenforce 
Disabled

2.接着下载所需相关软件

# 安装所需软件
[root@master ~]# yum  install nginx   -y

# Windows的C:\Windows\System32\drivers\etc\hosts  文件进行DNS映射
192.168.120.128  www.openlab.com  # 添加

#用vim命令打开/etc/hosts  文件进行DNS映射
192.168.120.128  www.openlab.com  # 添加

#设置开机启动
[root@master ~]# systemctl enable --now nginx

3.搭建网站目录及基础页面

(1)创建目录结构

为网站主页面和子页面创建对应的目录:

[root@master ~]# mkdir -p /www/openlab  #主页面目录
[root@master ~]# mkdir -p /www/openlab/data  #教学资料页面目录
[root@master ~]# mkdir -p /www/openlab/student  #学生信息页面目录
[root@master ~]# mkdir -p /www/openlab/money  #缴费网站目录
[root@master ~]# tree /www
/www
└── openlab
    ├── data
    ├── money
    └── student

4 directories, 0 files
(2)创建页面内容

为每个目录编写基础 HTML 页面:

# 主页面:显示"welcome to openlab"
[root@master ~]# echo "welcome to openlab" > /www/openlab/index.html
# 教学资料页面:显示"data"
[root@master ~]# echo "data" > /www/openlab/data/index.html
# 学生信息页面:显示"student"
[root@master ~]# echo "student" > /www/openlab/student/index.html
# 缴费网站页面:显示"money"
[root@master ~]# echo "money" > /www/openlab/money/index.html
[root@master ~]# tree /www
/www
└── openlab
    ├── data
    │   └── index.html
    ├── index.html
    ├── money
    │   └── index.html
    └── student
        └── index.html

4 directories, 4 files

4. 配置 Nginx 实现域名访问

(1)修改 Nginx 主配置文件/etc/nginx/nginx.conf,创建主网站www.openlab.com (核心配置如下):
[root@master ~]# vim /etc/nginx/nginx.conf
server {
        listen       80;   # 监听80端口(HTTP)
        server_name  www.openlab.com;   # 绑定域名
        root         /www/openlab;   # 主页面根目录
    }
[root@master ~]# systemctl restart nginx
(2)创建教学资料子网站www.openlab.com/data

修改 Nginx 主配置文件/etc/nginx/nginx.conf,定义域名、监听端口及目录映射:

[root@master ~]# vim /etc/nginx/nginx.conf   # 接着之前的继续向下编写
server {
        listen       80;
        server_name  www.openlab.com;
        root         /www/openlab;
    #增加如下配置
    location /data {
        alias   /www/openlab/data;
        index   index.html      index.htm;
    }
[root@master ~]# nginx -t   # 检查语法,显示"ok"和"successful"说明正确
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@master ~]# systemctl restart nginx
(3)创建学生信息子网站www.openlab.com/student

通过htpasswd工具创建用户认证文件,限制仅songtian访问:

第一步!!!!!!
[root@master ~]# yum install httpd-tools -y  # 若已安装会提示"already installed"

第二步  创建用户并且设置登陆密码!!!!!!
[root@master ~]# useradd song
[root@master ~]# passwd song
更改用户 song 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。
[root@master ~]# useradd tian
[root@master ~]# passwd tian 
更改用户 tian 的密码 。
新的密码: 
无效的密码: 密码少于 8 个字符
重新输入新的密码: 
passwd:所有的身份验证令牌已经成功更新。

第三步  创建认证用户文件!!!!!
# 创建用户文件并添加song(-c表示创建新文件)
[root@master ~]# htpasswd -c /www/openlab/student/passwd song
New password:    #密码123456
Re-type new password: 
Adding password for user song
# 添加tian用户(无需-c,避免覆盖现有文件)
[root@master ~]# htpasswd  /www/openlab/student/passwd tian
New password:    #密码123456
Re-type new password: 
Adding password for user tian
#查看用户文件确认配置:
[root@master ~]# cat /www/openlab/student/passwd 
song:$apr1$qj/UmGMC$1sOO0SB9h8H8ALOK4BXiU/
tian:$apr1$kzjNlDCe$6hf5GvkU1oSUe5ZK8eiwg.


第四步  编写配置文件!!!!!
[root@master ~]# vim /etc/nginx/nginx.conf   # 接着之前的继续向下编写
server {
        listen       80;
        server_name  www.openlab.com;
        root         /www/openlab;
    location /data {
        alias   /www/openlab/data;
        index   index.html      index.htm;
    }
    #增加如下配置
    location /student {
        alias   /www/openlab/student;
        index   index.html      index.htm;
        auth_basic      "please input password";
        auth_basic_user_file    /www/openlab/student/passwd;
    }
}
[root@master ~]# systemctl restart nginx
(4)创建缴费子网站www.openlab.com/money

通过 OpenSSL 生成 SSL 证书,实现www.openlab.com/money的 HTTPS 访问。

第一步   生成 SSL 私钥和证书!!!!!

# 在/etc/nginx目录下制作整数所用的私钥文件money.key
[root@master ~]# openssl genrsa -aes128 2048 > /etc/nginx/money.key
Generating RSA private key, 2048 bit long modulus (2 primes)
....+++++
.+++++
e is 65537 (0x010001)
Enter pass phrase:   # 输入加密私钥的密码123456
Verifying - Enter pass phrase:   # 再输一遍

# 制作证书
[root@master ~]# openssl req -utf8 -new -key /etc/nginx/money.key  -x509 -days 365 -out /etc/nginx/money.crt
Enter pass phrase for /etc/nginx/money.key:   # 需要输入加密私钥的密码
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
# 注意:下列证书信息项目,在面试时常问
Country Name (2 letter code) [AU]:86                                      # 国家代码
State or Province Name (full name) [Some-State]:shaanxi                   # 省份
Locality Name (eg, city) []:xi'an                                         # 城市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:openlab        # 公司
Organizational Unit Name (eg, section) []:test                            # 部门
Common Name (e.g. server FQDN or YOUR name) []:master                     # 主机名
Email Address []:612612@qq.com                                            # 邮箱

第二步  移除私钥密码(避免 Nginx 启动需手动输入密码)!!!

# 在加载SSL支持的Nginx并使用上述私钥时除去必须的口令        
[root@master ~]# cp /etc/nginx/money.key /etc/nginx/money.key.org
[root@master ~]# openssl rsa -in /etc/nginx/money.key.org /etc/nginx/money.key
rsa: Use -help for summary.
[root@master ~]# openssl rsa -in /etc/nginx/money.key.org -out /etc/nginx/money.key
Enter pass phrase for /etc/nginx/money.key.org:        # 输入加密私钥的密码
writing RSA key

第三步   配置 Nginx 的 HTTPS 服务!!!!!
[root@master ~]# vim /etc/nginx/nginx.conf
server {
        listen       80;
        server_name  www.openlab.com;
        root         /www/openlab;
    location /data {
        alias   /www/openlab/data;
        index   index.html      index.htm;
    }
    location /student {
        alias   /www/openlab/student;
        index   index.html      index.htm;
        auth_basic      "please input password";
        auth_basic_user_file    /www/openlab/student/passwd;
    }

        # Load configuration files for the default server block.
        include /etc/nginx/default.d/*.conf;

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }
    #增加以下内容
    server {
        listen       443 ssl http2;
        server_name     www.openlab.com;
        location /money {
                alias   /www/openlab/money;
                index   index.html index.htm;
        }
                ssl_certificate "/etc/nginx/money.crt";
                ssl_certificate_key "/etc/nginx/money.key";
    }

#再次检查配置并重启 Nginx: 
[root@master ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@master ~]# systemctl restart nginx
  

四、测试验证

1.主页面访问:在浏览器输入www.openlab.com,显示welcome to openlab

2.教学资料页面:访问www.openlab.com/data,显示data

3.学生信息页面:访问www.openlab.com/student,弹出认证窗口,输入songtian的用户名和密码后显示student(输入错误则无法访问)

倘若我们输入错误的用户名sun,就会被拒绝访问

我们输入正确的用户名和密码song,就可以看到内容了

4.缴费网站:访问https://www.openlab.com/money(注意是 https),浏览器可能提示证书不受信任(自签名证书正常现象),确认后显示money

在windows端打开浏览器,输入https://192.168.120.128,点击高级->接受风险并继续,就可以看到内容啦

五、总结

这次搭网站踩了不少坑,比如忘了关防火墙、改配置文件格式错了、生成证书时密码弄混了,但一步步试下来终于成了。感觉 Nginx 还挺强大的,能弄这么多不同的页面设置。以后再搭类似的网站,应该就不会这么手忙脚乱了,还可以使用内网穿透实现访问,但是不如花钱性能好哦

03-24
### 关于 OpenLab 的背景 在信息技术领域中,“OpenLab”通常指代一种开放实验室环境或项目名称。具体到引用中的情况,`openlab`可能是一个数据库实例名或者特定项目的标识符[^1]。 从技术实现角度来看,在 JDBC 连接字符串 `jdbc.oracle.thin:@192.168.1.17::1521:lz` 中提到的 `openlab` 和用户名密码组合 (`"openlab", "open123"`),可以推测这是一个用于测试或开发目的的 Oracle 数据库连接配置。其中: - `"openlab"` 是数据库用户的登录名。 - 密码为 `"open123"`。 - 数据库服务名为 `lz` 或者 IP 地址对应的主机上运行的服务。 这种命名方式常见于企业内部研发环境中,用来区分不同的功能模块或团队协作需求。 另外值得注意的是,在 Linux 文件系统管理方面也有涉及权限控制的概念[^2]。虽然这里讨论的重点并非文件操作而是网络编程接口调用,但两者之间存在一定的关联性——比如当应用程序试图访问远程数据库资源时同样会受到目标服务器端安全策略的影响,包括但不限于认证机制、授权范围界定等等因素制约。 最后关于时间戳属性修改命令选项说明部分,则提供了另一种视角下如何通过操作系统层面调整相关联对象状态信息的方法指导[^3]。这有助于管理员更好地维护系统记录一致性并满足审计合规要求等方面考量。 ```java // Java代码示例展示JDBC连接过程 try { Class.forName("oracle.jdbc.driver.OracleDriver"); } catch (ClassNotFoundException e) { System.out.println("Where is your Oracle JDBC Driver?"); e.printStackTrace(); } String url = "jdbc:oracle:thin:@192.168.1.17:1521:lz"; Properties info = new Properties(); info.put("user","openlab"); info.put("password","open123"); Connection conn; try{ conn= DriverManager.getConnection(url,info); }catch(SQLException ex){ ex.printStackTrace(); } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值