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

一、需求分析

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

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

3.要求

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

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

二、环境准备

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

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

三、实现步骤

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

首先检查关闭安全软件

bash 复制代码
[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.接着下载所需相关软件

bash 复制代码
# 安装所需软件
[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)创建目录结构

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

bash 复制代码
[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 页面:

bash 复制代码
# 主页面:显示"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> (核心配置如下):
bash 复制代码
[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,定义域名、监听端口及目录映射:

bash 复制代码
[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访问:

bash 复制代码
第一步!!!!!!
[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 访问。

bash 复制代码
第一步   生成 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 还挺强大的,能弄这么多不同的页面设置。以后再搭类似的网站,应该就不会这么手忙脚乱了,还可以使用内网穿透实现访问,但是不如花钱性能好哦

相关推荐
05大叔19 小时前
网络基础知识 域名,JSON格式,AI基础
运维·服务器·网络
安当加密19 小时前
无需改 PAM!轻量级 RADIUS + ASP身份认证系统 实现 Linux 登录双因子认证
linux·运维·服务器
dashizhi201519 小时前
服务器共享禁止保存到本地磁盘、共享文件禁止另存为本地磁盘、移动硬盘等
运维·网络·stm32·安全·电脑
卷福同学19 小时前
【养虾日记】QClaw操作浏览器自动化发文
运维·人工智能·程序人生·自动化
woho77889920 小时前
不同网段IP的网络打印机,打印、扫描设置
运维·服务器·网络
耗子会飞20 小时前
小白学习固定VM虚拟机的centos服务器的IP
运维·服务器·centos
门豪杰21 小时前
Ubuntu下安装Claude Code
linux·运维·ubuntu·claude·claude code
新新学长搞科研21 小时前
第五届电子、集成电路与通信技术国际学术会议(EICCT 2026)
运维·人工智能·自动化·集成测试·信号处理·集成学习·电气自动化
桌面运维家1 天前
Windows/Linux双启动:BIOS/UEFI多配置桌面创建指南
linux·运维·windows
無法複制1 天前
debian安装Postgresql-14.x
运维·postgresql·debian